嗨伙计们,
我想在关键字字段中搜索,如集合中的搜索键.
例如,我的关键是"Wing"关键字是"Wing Dress Others"的空格我应该写什么呢?
错误:方法'布尔比较(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;
}
Run Code Online (Sandbox Code Playgroud)
类似的que/ans:LINQ to SQL查询中的自定义方法
查看这篇完整的文章: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
Run Code Online (Sandbox Code Playgroud)
它编译时没有错误,但是当你执行它时,LINQ to SQL抛出一个异常说:"静态方法System.Boolean MyTest(LINQTest.Nwind.Product)没有支持的SQL转换."
当您尝试从q获取结果时(例如使用foreach语句),实际上会抛出异常,因为只有在需要结果且必须执行查询时,LINQ to SQL才会尝试将表达式树转换为T-SQL.
要修复该示例,您只需将检查产品名称是否以"B"开头的代码复制到查询的where子句,它就可以正常工作.
| 归档时间: |
|
| 查看次数: |
3816 次 |
| 最近记录: |