gpt4 book ai didi

asp.net - LINQ:如何重写 WHERE 子句以避免:在 LINQ to SQL 中不能使用本地序列

转载 作者:行者123 更新时间:2023-12-04 06:07:31 27 4
gpt4 key购买 nike

我的 Linq 查询给出了错误:本地序列不能在查询运算符的 LINQ to SQL 实现中使用,除了包含运算符

 var query = from product in dc.catalog
where TextBox1.Text.Split(' ').All(s => product.Name.Contains(s))
select product;

如何重写以避免此错误?

最佳答案

正如错误所说,只支持包含。您的列表变成了 SQL IN条款。
要完成您的任务,您将需要依赖 LINQ 提供的延迟执行,并构建一个 LINQ 语句来检查名称中的每个单词。

var query = dc.catalog.AsQueryable();
foreach(var s in TextBox1.Text.Split(' ') {
string copy = s; // Take a local copy of the string. Lambda's inside loops are fun!
query= query.Where(product => product.Name.Contains(copy));
}

编辑:获取字符串的本地副本以希望解决 lambda 上的范围问题。星期五下午 5 点在我的脑海中编译,如果仍然不正确,我很抱歉:)

关于asp.net - LINQ:如何重写 WHERE 子句以避免:在 LINQ to SQL 中不能使用本地序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8177381/

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