【发布时间】:2015-04-29 14:29:54
【问题描述】:
只是想知道这是否可能。我有针对实体框架上下文的各种 LINQ 查询,例如:
IQueryable<MetaData> metaDataList = context.MetaData.AsQueryable();
metaDataList = metaDataList.Where(md => md.MetaTagFilter1.Equals(keyValueMetaTagFilter.MetaTagValue, StringComparison.InvariantCultureIgnoreCase));
metaDataList = metaDataList.Where(md => md.MetaTagFilter2.Equals(keyValueMetaTagFilter.MetaTagValue, StringComparison.InvariantCultureIgnoreCase));
metaDataList = metaDataList.Where(md => md.MetaTagFilter3.Equals(keyValueMetaTagFilter.MetaTagValue, StringComparison.InvariantCultureIgnoreCase));
如您所见,除了使用的属性之外,它们是相同的:MetaTagFilter1、MetaTagFilter2、MetaTagFilter3。
我不想一遍又一遍地重复这个,我想写一个方法'Filter',这样我就可以这样称呼它:
metaDataList = metaDataList.Filter("MetaTagFilter1");
metaDataList = metaDataList.Filter("MetaTagFilter2");
metaDataList = metaDataList.Filter("MetaTagFilter3");
所以属性名称作为字符串传递,然后应该在 LINQ 查询中使用该属性。
我尝试通过将属性作为 Func 和反射传递,但如果在 LINQ 查询中使用,LINQ to entity 无法转换这些语句。
知道这是否可能吗?
【问题讨论】:
-
动态 LINQ 怎么样? weblogs.asp.net/scottgu/…
标签: c# linq entity-framework