通用集合由var值填充

时间:2011-10-10 06:23:25

标签: c# linq linq-to-objects linq-to-dataset

在我的代码中,我需要帮助才能将result值放入oList

NorthwindDataContext db = new NorthwindDataContext();
List<Category> oList = new List<Category>();
var result = from p in db.Categories
         select new { CategoryID = p.CategoryID, CategoryName=p.CategoryName };

我希望oList填充结果值。

3 个答案:

答案 0 :(得分:1)

您的结果没有列表中所需的整个对象。 所以你可以做以下事情。

 NorthwindDataContext db = new NorthwindDataContext();
            List<Category> oList = new List<Category>();
            oList.AddRange(db.Categories);

如果不严格要求添加到列表,那么您只需将结果集转换为列表,如下所示:

 NorthwindDataContext db = new NorthwindDataContext();
            List<Category> oList = db.Categories.ToList();

但是你需要知道这是示例代码。像这样拉出整个表可能不是最好的事情(除非你知道在表中会有固定数量的记录不会改变,并且可以安全地将它们全部加载到内存中)。

答案 1 :(得分:0)

NorthwindDataContext db = new NorthwindDataContext();
        List<Category> oList = db.Categories.ToList();

修改

假设Category类是你自己的

NorthwindDataContext db = new NorthwindDataContext();
        List<Category> oList = db.Categories.Select(p => new Category { CategoryID = p.CategoryID, CategoryName=p.CategoryName }).ToList();

答案 2 :(得分:0)

目前结果是一个匿名类型的集合,您希望它返回一个类别。

NorthwindDataContext db = new NorthwindDataContext();
            List<Category> oList = new List<Category>();
            var result = from p in db.Categories
                         select new Category { CategoryID = p.CategoryID, CategoryName=p.CategoryName };

然后,您可以将类别添加到oList -

oList.AddRange(result.ToList());

修改

好的,鉴于您只想从数据库中获取一些字段,请创建一个仅包含这些字段的新类型(如果您不需要在方法之外使用它,则不必执行此操作,把它留作匿名类型) -

class CategorySml
{
  public int CategoryID {get; set;}
  public string CategoryName {get; set;}
}

...

NorthwindDataContext db = new NorthwindDataContext();
            List<CategorySml> oList = new List<Category>();
            var result = from p in db.Categories
                         select new CategorySml { CategoryID = p.CategoryID, CategoryName=p.CategoryName };