0
 var sourceId =
            (from workstation in db.station
             join letter in db.letter on workstation.id equals letter.Site_Id
             where ThatDate < DateTime.Now.AddYears(-1)
             select workstatio).ToList();

これにより、複数の場合に繰り返しを出力するリストが生成されます。.distinctを使用するにはどうすればよいですか?

アドバイスしてください、ありがとう

4

2 に答える 2

0
 var sourceId =
            (from workstation in db.station
             join letter in db.letter on workstation.id equals letter.Site_Id
             where ThatDate < DateTime.Now.AddYears(-1)
             select workstation).Distinct().ToList();

これを見てください

http://msdn.microsoft.com/en-us/library/bb338049.aspx

于 2013-01-11T15:37:43.727 に答える
0

MoreLinqのDistinctByメソッドを確認することをお勧めします。ラムダ式をパラメーターとして渡すことができる場所。

あなたの例では、これは次のようになります。

var sourceId =
        (from workstation in db.station
         join letter in db.letter on workstation.id equals letter.Site_Id
         where ThatDate < DateTime.Now.AddYears(-1)
         select workstatio).DistinctBy(ws => ws.Id).ToList();

複数のプロパティでDistinctByを使用することもできます。

var sourceId =
        (from workstation in db.station
         join letter in db.letter on workstation.id equals letter.Site_Id
         where ThatDate < DateTime.Now.AddYears(-1)
         select workstatio).DistinctBy(ws => new {Id = ws.Id, OtherProperty = ws.OtherProperty}).ToList();

ところで、参照比較の代わりに、匿名タイプのインスタンスの同等性は、それぞれのプロパティを比較することによって決定されます。

私は最近、アンダース・ヘルスバーグ自身がこの問題の解決策を提案しているこのトピックに関する興味深い議論を見つけました。ここで読むことができます

于 2013-01-11T23:24:54.133 に答える