gpt4 book ai didi

c# - 在 lambda 查询中使用 ".Any()"会在 .net core EF 项目中引发错误

转载 作者:行者123 更新时间:2023-12-05 02:08:13 24 4
gpt4 key购买 nike

我有下面的查询,其中抛出下面提到的错误,它曾经在其他项目中工作,但无法在 .net 核心项目中运行。

var lstAppForm = await _appDBContext.ApplicationForms.Where(qr => appFormViewModel.Any(any => any.kycId == qr.id )).ToListAsync();

The LINQ expression 'DbSet .Where(a => __appFormViewModel_0 .Any(any => any.kycId == a.id))' could not be translated. Either rewrite the query in a form that can be translated, or switch to client evaluation explicitly by inserting a call to either AsEnumerable(), AsAsyncEnumerable(), ToList(), or ToListAsync(). See https://go.microsoft.com/fwlink/?linkid=2101038 for more information.

最佳答案

问题是表达式无法转换为 sql,因为 appFormViewModel 不是您数据库中的实体。它是您的 UI View 模型,与数据库中没有任何直接关系,因此它不应该以任何方式成为您的 EF 查询的一部分。

我们可以做的是使用 Select 将所需数据转换到 EF 查询之外,然后在 EF 的 Linq 查询中使用它:

var ids = appFormViewModel.Select(x => x.kycId).ToList();

var lstAppForm = await _appDBContext.ApplicationForms
.Where(qr => ids.Contains(qr.id))
.ToListAsync();

或:

var ids = appFormViewModel.Select(x => x.kycId).ToList();

var lstAppForm = await _appDBContext.ApplicationForms
.Where(qr => ids.Any(a => a == qr.id))
.ToListAsync();

关于c# - 在 lambda 查询中使用 ".Any()"会在 .net core EF 项目中引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61098550/

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