使用EntityFramework,我可以使用以下语法获取某种类型的实体列表:
我可以像这样做,最终只得到我感兴趣的数据:
我收到一份基于用户选择的字符串列表,其中包含所请求的汇总数据的字段(必要时还包括表)。例如,对于上述的“customerSummary”,提供的字符串列表将是:“Surname”,“FirstName”,“Address.Postcode”。
我的问题是:如何将这些字符串转换为提取指定字段所需的语法?
如果无法完成此操作,那么有什么更好的类型(而不是字符串)可以用于列的列表,以便我可以提取正确的信息?
我想我需要知道EF实体/表的成员/列/字段的类型,如果有意义的话。
编辑:
我尝试了建议的答案 - 使用动态LINQ - 使用以下语法。
但是这会导致以下结果:
如果我的Select语法不是问题,有人能看出问题在哪里吗?
编辑2:它是颠倒的。这个可以:
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
};
我收到一份基于用户选择的字符串列表,其中包含所请求的汇总数据的字段(必要时还包括表)。例如,对于上述的“customerSummary”,提供的字符串列表将是:“Surname”,“FirstName”,“Address.Postcode”。
我的问题是:如何将这些字符串转换为提取指定字段所需的语法?
如果无法完成此操作,那么有什么更好的类型(而不是字符串)可以用于列的列表,以便我可以提取正确的信息?
我想我需要知道EF实体/表的成员/列/字段的类型,如果有意义的话。
编辑:
我尝试了建议的答案 - 使用动态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
和OrderBy
子句的示例,但我认为我根据这些做得很对。如果我的Select语法不是问题,有人能看出问题在哪里吗?
编辑2:它是颠倒的。这个可以:
string parmList = "Surname, Firstname, Address.Postcode";
var customers = myEntities.Customers
.OrderBy("Address.Postcode")
.Select(parmList);