gpt4 book ai didi

c# - 将 List 转换为 EntityFramework 列/字段列表

转载 作者:行者123 更新时间:2023-11-30 15:34:39 24 4
gpt4 key购买 nike

使用 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 列表将是:“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 未处理。无法在当前范围或上下文中解析“姓氏”。确保所有引用的变量都在范围内,加载了所需的架构,并且正确引用了命名空间。

所以,一个后续问题。我是否正确使用了 Select?我只看到过使用 WhereOrderBy 子句的示例,但我认为基于这些我做的是正确的。

如果我的 Select 语法没有问题,谁能看出是什么问题?

编辑 2:它是颠倒的。这有效:

string parmList = "Surname, Firstname, Address.Postcode";
var customers = myEntities.Customers
.OrderBy("Address.Postcode")
.Select(parmList);

最佳答案

你可以使用dynamic linq,查看here .它也可以在 nuget 上找到

关于c# - 将 List<string> 转换为 EntityFramework 列/字段列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15922548/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com