C# 通过var值填充通用集合

C# 通过var值填充通用集合,c#,linq,linq-to-objects,linq-to-dataset,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.CategoryNa

在我的代码中,我需要帮助将
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 };
NorthwindDataContext db=新的NorthwindDataContext();
List oList=新列表();
var结果=来自数据库类别中的p
选择新{CategoryID=p.CategoryID,CategoryName=p.CategoryName};

我希望用结果值填充
oList

您的结果没有列表中所需的全部对象。 因此,您可以执行以下操作

 NorthwindDataContext db = new NorthwindDataContext();
            List<Category> oList = new List<Category>();
            oList.AddRange(db.Categories);
NorthwindDataContext db=新的NorthwindDataContext();
List oList=新列表();
oList.AddRange(数据库类别);
如果不严格要求添加到列表,则可以简单地将结果集转换为列表,如下所示:

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

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

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

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 };
编辑:

好的,假设您只想从数据库中获取几个字段,那么只需要使用这些字段创建一个新类型(如果您不需要在方法之外使用它,您就不必这样做,只需将其作为匿名类型)-

NorthwindDataContext db=新的NorthwindDataContext();
List oList=新列表();
var结果=来自数据库类别中的p
选择new CategorySml{CategoryID=p.CategoryID,CategoryName=p.CategoryName};

感谢您的回复,我知道这个过程,当我在linq上编写select new{}时会遇到问题。如何解决这个问题issue@shamim:别那么做!如果您只需要值的子集,请将其保留为匿名键入的列表。如果需要完整类别对象,请不要获取属性的子集…我需要类别表的列表。此表包含许多列,但我不希望选择所有列。如何解决此问题我已尝试addrange(),但是show me error无法从'System.Collections.Generic.List'转换为'System.Collections.Generic.IEnumerable'您可能应该在您的问题中提到这一点,因为这使问题变得非常不同。“我已经尝试了addrange()”-addrange仅在您使用“选择新类别{”而不是“选择新类别{”时才起作用.如果你得到了你想要的信息,别忘了把答案标记为已接受。。
NorthwindDataContext db = new NorthwindDataContext();
        List<Category> oList = db.Categories.Select(p => new Category { CategoryID = p.CategoryID, CategoryName=p.CategoryName }).ToList();
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.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 };