我正在使用LINQ to SQL并且有一个名为Product with 20 columns的数据库表。 Product表映射到LINQ to SQL元数据中的Product类。
我想使用我的dbContext并检索一些产品记录,但只填充10列而不是所有20列。
如何指定哪些列应该使用LINQ to SQL(或EF)返回/填充?
我知道一种方法是使用存储过程,但问题就在于此。
谢谢,
答案 0 :(得分:4)
您通常使用匿名类:
db.Products.Where(... filter ...).Select(item => new
{
Field1 = item.Field1,
Field2 = item.Field2,
});
仅选择您包含的字段。如果您打算将此数据结构传递给其他函数或返回它,则需要子字段集的具体类定义,例如:
class SmallerEntity
{
public something Field1;
public something Field2;
}
您可以在Select语句中初始化它:
db.Products.Where(... filter ...).Select(item => new SmallerEntity
{
Field1 = item.Field1,
Field2 = item.Field2,
});
我不推荐半填充现有类的做法。这会使您的状态空间变得不必要地复杂,并允许您的代码中出现更多错误。尝试在自己的类中包含较小的数据子集。