2016-11-28 79 views
0

好的。我很難過,因爲我不太瞭解LINQ,但這是問題所在。我有BsonDocuments的結構如下列表:使用LINQ獲取BsonDocuments數並將結果放入新列表中

{ "Produce" : "apple", "CompanyName" : "Ralphs", "Link" : "www.ralphs.com" }, 
{ "Produce" : "apple", "CompanyName" : "Ralphs", "Link" : "www.ralphs.com" }, 
{ "Produce" : "apple", "CompanyName" : "Albertsons", "Link" : "www.albertsons.com" }, 
{ "Produce" : "banana", "CompanyName" : "Ralphs", "Link" : "www.ralphs.com" } 

如何查詢使用LINQ找到特定數量的匹配,並將其放置在使用中的所有數據作爲唯一的密鑰BsonDocuments的新列表這個名單?例如,如果我是組以上的項目,我會得到:

{ "Produce" : "apple", "CompanyName" : "Ralphs", "Link" : "www.ralphs.com" }, // Count = 2 
{ "Produce" : "apple", "CompanyName" : "Albertsons", "Link" : "www.albertsons.com" }, // Count = 1 
{ "Produce" : "banana", "CompanyName" : "Ralphs", "Link" : "www.ralphs.com" } // Count = 1 

但因爲我只想要一個特定的計數次數(例如2),我的最終名單應該只包含

{ "Produce" : "apple", "CompanyName" : "Ralphs", "Link" : "www.ralphs.com" }, // Count = 2 

我已經知道如何使用針對MongoDB數據庫的聚合框架來做到這一點,但我想知道如何儘可能在LINQ中在內存中執行此操作。非常感謝您的幫助。

回答

0

試試這個代碼:

class Class1 
    { 
     public string Produce { get; set; } 
     public string CompanyName { get; set; } 
     public string Link { get; set; } 
    } 

    private void button3_Click(object sender, EventArgs e) 
    { 
     List<Class1> lst = new List<Class1>(); 
     lst.Add(new Class1() { Produce = "a", CompanyName="b", Link="c" }); 
     lst.Add(new Class1() { Produce = "a", CompanyName = "b", Link = "c" }); 
     lst.Add(new Class1() { Produce = "a", CompanyName = "d", Link = "c" }); 
     lst.Add(new Class1() { Produce = "e", CompanyName = "b", Link = "c" }); 

     var result = lst.GroupBy(x => x.Produce + x.CompanyName + x.Link).Select(g => new { Produce = g.First().Produce, 
      Company = g.First().CompanyName, 
      Link = g.First().Link, 
      Count = g.Count() 
     }).ToList(); 

    } 
+0

似乎並沒有工作。我得到一個500錯誤。 – Ray

+0

在哪行代碼出錯?進行調試。 –

相關問題