2016-10-06 5 views
3

だ選択は私のLinqpadの例である:のC#のLINQ - リスト内の重複する値を見つけ、それはここではID

void Main() 
{ 
    List<test> test=new List<test>(); 
    test.Add(new test("001","2016/10/5","11:00","A1")); 
    test.Add(new test("002","2016/10/5","11:00","A1")); 
    test.Add(new test("003","2016/10/4","11:00","cc")); 
    test.Add(new test("004","2016/10/4","10:00","cc")); 
    test.Add(new test("005","2016/10/3","11:00","cc")); 

    var list=test.GroupBy(x => new { x.BOOKING_DATE, x.PERIOD_NAME,x.BOOKING_TABLE}) 
    .Where(g=>g.Count()>1).Select(G=>G.Key.BOOKING_TABLE); 

    list.Dump(); 
} 

public class test{ 
    public string ORDERM_ID; 
    public string BOOKING_DATE; 
    public string PERIOD_NAME; 
    public string BOOKING_TABLE; 
    public test(string id,string date,string period,string table){ 
     this.ORDERM_ID=id; 
     this.BOOKING_DATE=date; 
     this.PERIOD_NAME=period; 
     this.BOOKING_TABLE=table; 
    } 
} 

私はBOOKING_DATEとPERIOD_NAME によってグループが重複しBOOKING_TABLEを見つけたいです。

この例では、重複値は "A1"、 ですが、リスト内でORDERM_IDを選択します。 これを行うにはどうすればlinqクエリを作成できますか?

答えて

5

は、あなたは、単にこの答えは多くのことをwork.Thanksでき

var list = test 
    .GroupBy(x => new { x.BOOKING_DATE, x.PERIOD_NAME }) 
    .Where(g => g.Count() > 1) 
    .SelectMany(g => g.Select(gg => gg.ORDERM_ID)); 
+0

グループからORDERM_ID年代を選択します(その後、SelectManyでそれを平らに)する必要があります。 –

関連する問題