c# - 如何在 Entity Framework 中获取实体的某些列?

标签 c# sql linq entity-framework-6

假设我有一个包含超过 1000000 列的表。当我使用 LINQ To SQLEntity-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/

相关文章:

c# - 如何在 MongoDB C# 驱动程序中使用 "Or"语句?

c# - 如何使用特定字符将数组拆分为更小的数组?

MySQL - 使用 WHERE 子句进行内部连接

c# - 从两个 List<> 生成随机数

c# - Linq 相当于 JavaScript join?

sql-server - Entity Framework - SkipWhile

c# - 具有泛型类型参数的 DynamicMethod

c# - NUnit 中单个测试的超时

sql - 使用sql server 2005从另一个表更新多列

mysql - SQL SELECT - 仅当存在另一条记录时才选择