使用 EntityFramework,我可以使用以下语法获取特定类型的实体列表:
List<Customer> customers = ((IQueryable<Customer>)myEntities.Customers
.Where(c => c.Surname == strSurname)
.OrderBy(c => c.Surname)).ToList<Customer>();
然后我可以做这样的事情来结束我感兴趣的数据:
var customerSummaries = from s in customers
select new
{
s.Surname, s.FirstName, s.Address.Postcode
};
我得到了string
包含所请求的汇总数据的字段(以及必要时的表格)的列表(基于用户选择)。例如,对于上面的“customerSummary”,string
提供的 s 列表将是:“Surname”、“FirstName”、“Address.Postcode”。
我的问题是:如何将该字符串列表转换为仅提取指定字段所需的语法?
如果无法做到这一点,那么对于列列表来说,什么是更好的类型(比字符串),以便我可以提取正确的信息?
如果有意义的话,我想我需要知道 EF [entity|table] 的 [member|column|field] 的类型。
编辑:
我尝试了建议的答案 - 动态 linq - 使用以下语法
string parmList = "Surname, Firstname, Address.Postcode";
var customers = myEntities.Customers.Select(parmList)
.OrderBy("Address.Postcode");
但这会导致:EntitySqlException was unhandled. 'Surname' could not be resolved in the current scope or context. Make sure that all referenced variables are in scope, that required schemas are loaded, and that namespaces are referenced correctly.
所以,一个后续问题。我使用Select
正确吗?我只看到了使用Where
andOrderBy
子句的示例,但我认为基于这些我做对了。
如果我的 Select 语法不是问题,谁能看到是什么?
编辑2:它是颠倒的。这有效:
string parmList = "Surname, Firstname, Address.Postcode";
var customers = myEntities.Customers
.OrderBy("Address.Postcode")
.Select(parmList);