[解決済み】linqを使用したSelect distinct [重複]。
2022-04-02 02:04:24
質問
のクラスリストを持っています。
public class LinqTest
{
public int id { get; set; }
public string value { get; set; }
}
List<LinqTest> myList = new List<LinqTest>();
myList.Add(new LinqTest() { id = 1, value = "a" });
myList.Add(new LinqTest() { id = 1, value = "b" });
myList.Add(new LinqTest() { id = 2, value = "c" });
そのリストから、異なるidだけを選択する必要があります。 つまり、結果として得られるリストには、以下のものだけが含まれる必要があります。
[{id=1,value="a"},{ id = 2, value = "c" }]
linqでこれを行うにはどうすればよいのでしょうか?
編集
入力してください。
id value
1 a
1 b
2 c
3 d
3 e
Out putはこうあるべき。
id value
1 a
2 c
3 d
の繰り返しがある場合、その繰り返しを削除します。
id
の場合、result は最初に発生したものだけを取ります。
どのように解決するのですか?
myList.GroupBy(test => test.id)
.Select(grp => grp.First());
編集:このようになります
IEnumerable<>
を
List<>
は謎が多いようですが、単純に書けばいいのです。
var result = myList.GroupBy(test => test.id)
.Select(grp => grp.First())
.ToList();
しかし、多くの場合
IEnumerable
よりも、むしろ
IList
のように、上のLinqは遅延評価されます:列挙可能なものが反復されるまで、実際にはすべての作業を行いません。列挙が反復されるまで実際にはすべての作業を行いません。
ToList
は、実際に列挙可能なもの全体を走査するので、すべての作業を前もって行わなければなりません。(そして、列挙が無限に長い場合は、少し時間がかかるかもしれません。)
このアドバイスの裏側には、このような列挙のたびに
IEnumerable
を評価するための作業を新たに行わなければならない。ですから、それぞれのケースで、遅延評価された
IEnumerable
または
List
,
Set
,
Dictionary
といった具合です。
関連
-
[解決済み] LINQを使用してList<T>から要素を削除する
-
[解決済み] リストからランダムに項目を選択するにはどうすればよいですか?
-
[解決済み] LINQで複数の "order by "を使用する
-
[解決済み] 特定のプロパティに対するLINQのDistinct()
-
[解決済み] SelectとSelectManyの違い
-
[解決済み] LINQのGroup by
-
[解決済み] DataTableに対するLINQクエリ
-
[解決済み] LINQで.Firstと.FirstOrDefaultを使用するタイミングは?
-
[解決済み] LINQ集計アルゴリズム説明
-
[解決済み】groupbyとcountを使ったLINQ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] エンティティタイプ <type> は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】トランスポート接続からデータを読み取れない:既存の接続は、リモートホストによって強制的に閉じられました。
-
[解決済み】非静的メソッドはターゲットを必要とする
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み】Moqを使用してメソッド呼び出しを検証する
-
[解決済み】Visual Studio: 操作を完了できませんでした。パラメータが正しくありません
-
[解決済み] 2つのリストを結合する
-
[解決済み】エラー「必要なフォーマルパラメータに対応する引数が与えられていない」を解決する?
-
[解決済み】Nullableオブジェクトは値を持たなければならない?
-
[解決済み] LINQ: 区分された値