gpt4 book ai didi

c# - 无法翻译 LINQ 表达式

转载 作者:行者123 更新时间:2023-12-04 16:00:31 25 4
gpt4 key购买 nike

我有一张 table 叫 Orders和一个名为 Customers 的列表. Orders有房产CustomerId .现在我想获取我的 Customers 中所有客户的订单列表。

这是我尝试过的:

IEnumerable<Customer> customers; // list of customers
List<Order> orders = dbContext.Orders.Where(x => customers.Any(y => y.Id == x.CustomerId)).Include(x => x.someOtherTable).ToList();

出于某种原因,这总是导致异常,指出无法翻译 LINQ 表达式。我的假设是,这是因为 Order 中的 CustomerId 可以为空。我不确定。

订购 :
public int Id { get; set; }
public int? CustomerId { get; set; } // has to be nullable
...

客户 :
public int Id { get; set; }
public string Name { get; set; } // has to be nullable
...

由于简单,这只是一个小片段。

最佳答案

不,原因是customersIEnumerable , 不是 IQueryable ,因此 LINQ 无法将您的集合转换为 SQL 代码。

转换您的 IEnumerable<Customer>到 id 列表:

int[] ids = customers.Select(o => o.id).ToArray();

WhereContains :
List<Order> orders = dbContext.Orders.Where(x => ids.Contains(x.Id))
.Include(x => x.someOtherTable).ToList();

关于c# - 无法翻译 LINQ 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59526624/

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