假设我有一个包含超过 1000000 列的表。当我使用 LINQ To SQL
和 Entity-Framework
时,所有查询都将用 c# 编写,如下所示:
EFContext.MyTableName.Where(row=>row.column1==someValue)
.Select(...)
.FirstOrDefault(...)
.Any(...)
...
如何只获取实体的部分列?例如,有什么方法可以只获取 1000000 列中的第 1、2、3 列?
注意:
结果数据的类型应在选择后保留,例如,如果不过滤某些列,结果类型为 Type1,过滤后结果类型为 Type1 非常重要,但过滤后的 Type1 的那些属性的值应为 null 或默认。
最佳答案
要只获得几个 ROWS,您可以使用:
.Take(3);
要仅获取一些您可以使用的列:
.Select(x => new MyType() { Column1 = x.Column1, Column2 = x.Column2 })
请注意,该对象现在未附加到对象上下文,因此它不会受到 SaveChanges() 的影响。但是您只会选择几列,而且类型仍然是正确的。
要获得自己的默认值而不是变量类型的框架默认值,您可以修改构造函数类型以设置默认值。
关于c# - 如何在 Entity Framework 中获取实体的某些列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22324064/