3

我有我創建了一個表,我把它插入到填充對象的列表與LINQ

var CurrTable; 

表看起來是這樣的:

SaleID | ProductID | ProductName 

    1 |  1  | Book 
    1 |  2  | Notebook 
    2 |  3  | Guitar 
    2 |  4  | Piano 

我有兩個班,ProductInfo和SaleInfo:

public class ProductInfo 
{ 
    int ProductID; 
    string ProductName; 
} 

public class SaleInfo 
{ 
    int SaleID; 
    List<ProductInfo> products; 
} 

我只是想填補SaleInfo的(List<SaleInfo>)與數據列表...

我寫的查詢看起來是這樣的:

List<SaleInfo> results = (from s in CurrTable.AsEnumerable() 
             group s by new { s.SaleId} into g 
             select new SaleInfo 
             { 
              SaleID = g.Key.SaleId, 
              Products = (*...*) 
             }).ToList(); 

但我不知道該怎麼在(*...*)寫。我不想做另一次選擇,因爲我已經有了這些數據。我只想填充產品列表中的列表,這就是我使用組功能的原因。

我該怎麼做?

回答

3

我懷疑你希望你的SELECT子句是:

select new SaleInfo 
{ 
    SaleID = g.Key.SaleId, 
    Products = g.Select(x => new ProductInfo { ProductID = x.ProductID, 
               ProductName = x.ProductName }) 
       .ToList() 
} 
+0

謝謝你,這是非常有益的! – Eran 2012-04-13 10:15:53

+0

如果我不想將其實現爲列表,該怎麼辦?如果我想在IQueryable中保持它爲IQueryable,該怎麼辦?這有道理嗎?可能嗎? – 2016-07-13 08:55:43

+1

@LuisGouveia:那麼你總是可以不調用'ToList' ......但是如果不知道更多關於你的上下文的信息,那麼你是否會做你想做的事情是很難說的。 – 2016-07-13 08:58:01

0

也許是這樣的:

select new SaleInfo() 
     { 
      SaleID=g.Key.SaleId, 
      products=g.Select (x =>new ProductInfo(){ 
       ProductID=x.ProductID,ProductName=x.ProductName}).ToList() 
     } 

如果你應該能夠訪問你的屬性。我會改變類:

public class ProductInfo 
{ 
    public int ProductID; 
    public string ProductName; 
} 

public class SaleInfo 
{ 
    public int SaleID; 
    public List<ProductInfo> products; 
} 
+0

謝謝你,這是非常有益的! – Eran 2012-04-13 10:16:05

+0

你知道如果你可以考慮接受答案,你可以回答這個問題嗎? – Arion 2012-04-13 12:56:48