Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.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和Trim.Text进行搜索_C#_Linq - Fatal编程技术网

C# 使用Linq和Trim.Text进行搜索

C# 使用Linq和Trim.Text进行搜索,c#,linq,C#,Linq,我试图将此测试代码转换为C#,但Trim命令有问题。有人在C中做过类似的事情吗?将使用这个文本框搜索aspx页面 Dim q = From b In db.Blogs _ Where b.BlogContents.Contains(txtSearch.Text.Trim()) Or _ b.BlogTitle.Contains(txtSearch.Text.Trim()) _ Select b 不确定你在问什么,但c#中的微调功能是相

我试图将此测试代码转换为C#,但Trim命令有问题。有人在C中做过类似的事情吗?将使用这个文本框搜索aspx页面

Dim q = From b In db.Blogs _
        Where b.BlogContents.Contains(txtSearch.Text.Trim()) Or _
              b.BlogTitle.Contains(txtSearch.Text.Trim()) _
        Select b

不确定你在问什么,但c#中的微调功能是相同的


您遇到了什么问题?这是什么LINQ提供者?内存中的集合(LINQ到对象)?还是LINQ到SQL?还是LINQ到实体

我怀疑您对db LINQ提供程序有所了解,但不知道Trim()-在这种情况下,请先尝试执行Trim:

string s = txtSearch.Text.Trim();
var q = from b in db.Blogs
        where b.BlogContents.Contains(s) || b.BlogTitle.Contains(s)
        select b;
这涉及两个和三个不同的问题:

1:捕获:在原始版本中,捕获到查询中的是
txtSearch
,这很复杂;通过首先计算
Trim
,捕获的是
s
,这是一个简单的不可变字符串

2:表达式复杂性:对于基于表达式的LINQ(即数据库),整个表达式(包括
.Text
.Trim
等)是表达式的一部分。如果LINQ提供程序不识别其中一个或多个,它将失败。通过首先将其缩减为字符串,LINQ提供程序只需要处理一个字符串,每个提供程序都应该可以处理这个字符串

(新增)
3:重复计算:LINQ到对象是非常文字化的;如果您要求它在Where(etc)中使用复杂的操作,它会这样做,即使很明显每行的答案都没有变化;i、 e.
txtSearch.Text.Trim()
不应该每行更改,那么为什么要每行计算一次呢?在查询之前对它求值,它只执行一次。

我在切换到C#时也遇到过这种情况。在C#中,智能感知要差得多: