-1

在我的代码中,我需要帮助才能将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用结果值填充。

4

3 回答 3

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

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

于 2011-10-10T06:27:15.897 回答
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();
于 2011-10-10T06:27:24.643 回答
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 };
于 2011-10-10T06:28:06.130 回答