使用LINQ填充对象列表

时间:2012-04-13 09:19:57

标签: linq entity-framework linq-to-sql linq-to-entities linq-to-objects

我有一个我创建的表,然后将其插入

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();

但我不知道在(*...*)写些什么。我不想做另一个选择,因为我已经有了数据。我只想填写产品列表中的列表,这就是我使用组功能的原因。

我该怎么做?

2 个答案:

答案 0 :(得分:4)

我怀疑你想要你的select子句:

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

答案 1 :(得分: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;
}