gpt4 book ai didi

c# - 在linq语句中添加自定义函数

转载 作者:太空宇宙 更新时间:2023-11-03 18:46:46 29 4
gpt4 key购买 nike

大家好
我想在关键字字段中搜索,例如集合中的搜索键。
例如我的键是“Wing”关键字是“Wing Dress Others”带空格我应该写什么呢?
错误:方法“Boolean Compare(System.String, System.String)”没有支持的 SQL 转换。

protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString.HasKeys())
{
DbDataContext db = new DbDataContext();
var Query = from n in db.Products
where Compare(n.Keywords, Request.QueryString["key"])
select n;
DataList1.DataSource = Query;
DataList1.DataBind();
}
}

bool Compare(string keywords,string key)
{
string[] items = keywords.Split(' ');
foreach (string item in items)
if (item.Equals(key)) return true;
return false;
}

最佳答案

类似的问题/答案:Custom Method in LINQ to SQL query

查看这篇完整文章:What is and what isn't possible with linq

以下是不可能的

// function used in filter
static bool MyFunc(Nwind.Product p)
{
return p.ProductName.StartsWith("B");
}
// query that uses MyFunc
var q =
from p in db.Products
where MyPriceFunc(p.UnitPrice) > 30m
select p

它编译没有错误,但是当您执行它时,LINQ to SQL 会抛出一个异常:“静态方法 System.Boolean MyTest(LINQTest.Nwind.Product) 没有支持的 SQL 转换。”

当您尝试从 q 获取结果时(例如使用 foreach 语句)实际上会抛出异常,因为 LINQ to SQL 仅在需要结果且查询必须是执行。

要修复该示例,您只需将检查产品名称是否以“B”开头的代码复制到查询的 where 子句中,它就可以正常工作。

关于c# - 在linq语句中添加自定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3665323/

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