Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在linq语句中添加自定义函数_C#_Linq To Sql - Fatal编程技术网

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

C# 在linq语句中添加自定义函数,c#,linq-to-sql,C#,Linq To Sql,Hi folksI我想在关键字字段中搜索,如集合中的搜索键。e、 g.我的关键是Wing关键字Wing Dress其他人有空格吗我应该写什么来代替它? 错误:方法“Boolean ComparesSystem.String,System.String”不支持转换为SQL protected void Page_Load(object sender, EventArgs e) { if (Request.QueryString.HasKeys()) { DbData

Hi folksI我想在关键字字段中搜索,如集合中的搜索键。e、 g.我的关键是Wing关键字Wing Dress其他人有空格吗我应该写什么来代替它? 错误:方法“Boolean ComparesSystem.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;
}
类似的que/ans:

查看全文:

以下是不可能的

// 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会抛出一个异常,说明:Static method System.Boolean MyTestLINQTest.Nwind.Product不支持到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;
}
当您尝试从q获取结果(例如使用foreach语句)时,实际上会引发异常,因为LINQ to SQL仅在需要结果且必须执行查询时才会尝试将表达式树转换为T-SQL

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

类似的que/ans:

查看全文:

以下是不可能的

// 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会抛出一个异常,说明:Static method System.Boolean MyTestLINQTest.Nwind.Product不支持到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;
}
当您尝试从q获取结果(例如使用foreach语句)时,实际上会引发异常,因为LINQ to SQL仅在需要结果且必须执行查询时才会尝试将表达式树转换为T-SQL


要修复该示例,您只需将检查产品名称是否以B开头的代码复制到查询的where子句中即可。在这种情况下,您可以使用Contains来代替自制的比较,Contains检查字符串中是否有字符串。这对LINQ来说确实有效

例如:

    var Query = from n in db.Products
                where n.Keywords.Contains(Request.QueryString["key"])
                select n;

Contains也适用于数组。

在本例中,您可以使用Contains来代替自制的比较,它检查字符串中是否有字符串。这对LINQ来说确实有效

例如:

    var Query = from n in db.Products
                where n.Keywords.Contains(Request.QueryString["key"])
                select n;

包含也适用于阵列。

不,你不能这样做,它也被要求了一百万次。而不是?你说过一些事情是对的或错的,但这不是解决办法。不,你不能这样做,它也被问了一百万次。而不是?你说过某事是对的或错的,但这不是解决办法。你说过某事是对的或错的,但这不是解决办法。我应该用什么来代替它?代码或示例您说过某事是对的或错的,但这不是解决方案。我应该用什么来代替它?你能给我举个例子吗?是的,你能给我举个例子吗?