我有这样的代码对LINQ选择项目Lambda表达式
var list = _db.Projects.Where(item => item.Loc =="IN").Select(p => new {id=p.Id, title=p.Title,pc=p.PostalCode });
有很多列的项目表,我需要从数据库中动态和加载查询所需的列,不随数据的所有列。
问题:
- 如何编写lambda表达式LINQ的选择?
- 如何通过选择特定列,实体框架来减少数据库读取数据?
我有这样的代码对LINQ选择项目Lambda表达式
var list = _db.Projects.Where(item => item.Loc =="IN").Select(p => new {id=p.Id, title=p.Title,pc=p.PostalCode });
有很多列的项目表,我需要从数据库中动态和加载查询所需的列,不随数据的所有列。
问题:
看看生成的C#编译器和尝试复制它做什么的表达:
Expression<Func<Project, object>> lambda =
(Project p) => (object)new {id=p.Id, title=p.Title,pc=p.PostalCode };
我希望这个代码编译。如果没有,你一定能够修复它。之后,查看lambda
变量的内容。
请注意,投到object
只是在那里进行编译。你不需要/希望那是生产。
嗨,我需要改变。选择(p => new {id = p.Id,title = p.Title,pc = p.PostalCode});与必填字段。 –
@RameshBolla查看C#编译器生成的表达式,以便了解它的外观。你必须自己构建一个只包含必需字段的表达式。使用'Expression'类。 – usr
嗯......目前还不清楚你需要什么,因为你发布的代码似乎回答你自己的问题。你可以说得更详细点吗?你想要返回的对象是一个特定的类型?另外,除非您有一些存储大量数据的列,否则选择较少的列不太可能显着提高您的性能。 –
嗨本Tidman,我需要建立一个选择动态查询与必填字段。所以我需要使用lamda表达式或linq表达式来获取.Select(p => new {id = p.Id,title = p.Title,pc = p.PostalCode})的动态代码。 –
如果您要动态创建匿名类型(这似乎是您想要的),您将如何访问其成员? – svick