带有Lambda的c#SQL:Can';用于多个结果的t过滤器

带有Lambda的c#SQL:Can';用于多个结果的t过滤器,c#,sql,wpf,lambda,C#,Sql,Wpf,Lambda,我在尝试应用where筛选器时遇到问题。然而,这并没有达到预期的效果 是关于这条线的 &&包含(textBoxFilteromScrijving.Text) 现在可以返回部分匹配到此字段的所有结果。然而,我试图使它能够在一个输入字段中包含多个单词,然后它将返回与此匹配的所有结果 输入将由一个“,”分隔。像这样: 列表myomschrijvingen= TextBoxFilteromScrijving.Text.Split(',').ToList() 然后搜索与这些匹配的内容,只是它似乎忽略了Co

我在尝试应用where筛选器时遇到问题。然而,这并没有达到预期的效果

是关于这条线的

&&包含(textBoxFilteromScrijving.Text)

现在可以返回部分匹配到此字段的所有结果。然而,我试图使它能够在一个输入字段中包含多个单词,然后它将返回与此匹配的所有结果

输入将由一个“,”分隔。像这样:

列表myomschrijvingen= TextBoxFilteromScrijving.Text.Split(',').ToList()

然后搜索与这些匹配的内容,只是它似乎忽略了Contains属性,只搜索完全匹配的内容

&&listMyOmschrijvingen.Contains(fout.Omschrijving)

这将提供所需的所有这些结果。但唯一的问题是它们需要100%精确。如果我希望所有结果都带有DEF_ACK和DEF_VOLT,我希望键入ACK,VOLT作为输入字段“Omschrijving”,结果它会给出SQL数据库中所有匹配的记录

现在它只在100%全场比赛时才这样做

例如,我必须输入DEF_ACK、DEF_VOLT(一个空格甚至会把结果弄乱)。有人知道如何解决这个问题吗?也许有些事情真的很傻,因为一张唱片很容易,但多张唱片就不行了

FoutenResultaat =
(from x in treinen
join fout in fouten
on x.TreinId equals fout.TreinId
where dateStart <= fout.Datum && dateEnd >= fout.Datum 
&& treinenIds.Contains(fout.Treinen.Name)
&& fout.Omschrijving.Contains(textboxFilterOmschrijving.Text)
&& fout.FoutCode.Contains(textboxFilterFout.Text) 
&& fout.Module.Contains(textboxFilterModule.Text)

orderby fout.Datum descending, fout.Time descending

select new
{
    Datum = fout.Datum,
    Time = fout.Time,
    FoutCode = fout.FoutCode,
    Omschrijving = fout.Omschrijving,
    Module = fout.Module.ToUpper(),
    FoutId = fout.FoutId,
    Name = x.Name,
});
foutenResultAt=
(来自treinen的x)
在fouten中加入fout
关于x.TreinId等于fout.TreinId
其中dateStart=fout.基准
&&treinenIds.Contains(fout.Treinen.Name)
&&包含(textBoxFilteromScrijving.Text)
&&fout.FoutCode.Contains(textboxFilterFout.Text)
&&fout.Module.Contains(textboxFilterModule.Text)
订单按fout.数据递减,fout.时间递减
选择新的
{
基准面=四个基准面,
时间=四点时间,
FoutCode=fout.FoutCode,
Omschrijving=fout.Omschrijving,
Module=fout.Module.ToUpper(),
FoutId=fout.FoutId,
Name=x.Name,
});

我认为这里的问题是
string.Contains()
IEnumerable.Contains()是完全不同的方法。当您在字符串上使用
Contains()
时,它将查看该字符串的内容,以查看它是否包含给定的
;这就是为什么你得到了你所指的部分匹配。另一方面,在列表上使用
Contains()
将查找列表中某个项目的完全匹配

尝试以下操作(为您的空间问题添加了奖励:.Trim()):


我认为这里的问题是
string.Contains()
IEnumerable.Contains()
是完全不同的方法。当您在字符串上使用
Contains()
时,它将查看该字符串的内容,以查看它是否包含给定的
;这就是为什么你得到了你所指的部分匹配。另一方面,在列表上使用
Contains()
将查找列表中某个项目的完全匹配

尝试以下操作(为您的空间问题添加了奖励:.Trim()):


你能提供一个输入、输出和预期结果的例子吗?没有例子就很难理解你的尝试,也很难理解你做错了什么。你能提供一个输入、输出和预期结果的例子吗?没有榜样就很难跟随你的尝试,也很难理解你做错了什么。
&& listMyOmschrijvingen.Where(l => fout.Omschrijving.Contains(l.Trim())).Any()