在C#中使用可枚举的.Any()将LINQ用于数据集时,如何添加多个条件?

在C#中使用可枚举的.Any()将LINQ用于数据集时,如何添加多个条件?,c#,.net,linq,C#,.net,Linq,我试图检查dataTable中是否存在值 代码为: bool lol = dtble.AsEnumerable().Any(l => array[0] == l.Field<String>("id")); bool lol=dtble.AsEnumerable().Any(l=>array[0]==l.Field(“id”); 我需要在此代码中添加更多条件,因为我想检查多个条件 我在此Linq中添加的条件需要是: array[1]==l.Field(“名称”) 及 arra

我试图检查dataTable中是否存在值

代码为:

bool lol = dtble.AsEnumerable().Any(l => array[0] == l.Field<String>("id"));
bool lol=dtble.AsEnumerable().Any(l=>array[0]==l.Field(“id”);
我需要在此代码中添加更多条件,因为我想检查多个条件

我在此Linq中添加的条件需要是:

array[1]==l.Field(“名称”)


array[2]==l.Field(“Stunt”)

您可以使用LINQ中的逻辑AND(
&&
)组合两个条件,然后您的查询将如下所示:

bool lol = dtble.AsEnumerable().Any(l =>
                                    array[0] == l.Field<String>("id") && 
                                    array[1] == l.Field<String>("Stunt"));
bool lol = (from dRow in dtble.AsEnumerable()
            where array[0] == dRow.Field<string>("id")
            && GetFirstWord(array[1]) == GetFirstWord(dRow.Field<string>("Name"))
            && array[2] == dRow.Field<string>("Stunt")
            select dRow).Any(); 
bool lol=dtble.AsEnumerable().Any(l=>
数组[0]==l.Field(“id”)和
数组[1]==l.Field(“特技”);

您可以使用LINQ中的逻辑AND(
&&&
)组合两个条件,然后您的查询将如下所示:

bool lol = dtble.AsEnumerable().Any(l =>
                                    array[0] == l.Field<String>("id") && 
                                    array[1] == l.Field<String>("Stunt"));
bool lol = (from dRow in dtble.AsEnumerable()
            where array[0] == dRow.Field<string>("id")
            && GetFirstWord(array[1]) == GetFirstWord(dRow.Field<string>("Name"))
            && array[2] == dRow.Field<string>("Stunt")
            select dRow).Any(); 
bool lol=dtble.AsEnumerable().Any(l=>
数组[0]==l.Field(“id”)和
数组[1]==l.Field(“特技”);

现在我明白你的意思了:

因此,要匹配id,请检查名称是否以数组和DataTable中的相同单词开头,并检查匹配特技。以下各点也是如此:

bool lol = dtble.AsEnumerable().Any(l =>
                                    array[0] == l.Field<String>("id") && 
                                    array[1] == l.Field<String>("Stunt"));
bool lol = (from dRow in dtble.AsEnumerable()
            where array[0] == dRow.Field<string>("id")
            && GetFirstWord(array[1]) == GetFirstWord(dRow.Field<string>("Name"))
            && array[2] == dRow.Field<string>("Stunt")
            select dRow).Any(); 
编辑:

您可能需要更换该行:

&& GetFirstWord(array[1]) == GetFirstWord(dRow.Field<string>("Name")) 
&&GetFirstWord(数组[1])==GetFirstWord(dRow.Field(“Name”))
如果固定名称是dataTable中的名称(作为第一个单词),并且该名称可能不是数组中的第一个单词,则使用以下方法:

&& dRow.Field<string>("Name").Contains(GetFirstWord(array[1])) 
&&dRow.Field(“Name”).包含(GetFirstWord(数组[1]))

现在我明白你的意思了:

因此,要匹配id,请检查名称是否以数组和DataTable中的相同单词开头,并检查匹配特技。以下各点也是如此:

bool lol = dtble.AsEnumerable().Any(l =>
                                    array[0] == l.Field<String>("id") && 
                                    array[1] == l.Field<String>("Stunt"));
bool lol = (from dRow in dtble.AsEnumerable()
            where array[0] == dRow.Field<string>("id")
            && GetFirstWord(array[1]) == GetFirstWord(dRow.Field<string>("Name"))
            && array[2] == dRow.Field<string>("Stunt")
            select dRow).Any(); 
编辑:

您可能需要更换该行:

&& GetFirstWord(array[1]) == GetFirstWord(dRow.Field<string>("Name")) 
&&GetFirstWord(数组[1])==GetFirstWord(dRow.Field(“Name”))
如果固定名称是dataTable中的名称(作为第一个单词),并且该名称可能不是数组中的第一个单词,则使用以下方法:

&& dRow.Field<string>("Name").Contains(GetFirstWord(array[1])) 
&&dRow.Field(“Name”).包含(GetFirstWord(数组[1]))


简单逻辑运算符
&&
我知道,但我没有LinQ方面的经验。我的不好。你能显示来自数组和数据表的样本数据吗?简单的逻辑运算符
&&
我知道,但我没有LinQ的经验。我的不好。你能显示来自数组和数据表的样本数据吗?对不起,我从另一个资源获取数据
array
。因此,对于
dtble
,它是不正确的。它首先有七个相似的字符。我尝试使用
StartWith()
SubString()
使其工作。但我不知道如何添加到Linq代码中。我有一种强烈的感觉,他所指的数组就是数据表:)我从一个网站获得
array
,从另一个网站获得
dtble
array={12,Luvis走,1 | 34,Selena不在这里,0}
像这样!在
数组
dtble
index=1
中,使用相同的名字。如果第一个相同,如Levis或Selena,我会检查是否正确,这两个结构是否相同,请将详细信息包括在问题中?对于示例输入和预期输出?抱歉,我从另一个资源获取数据
array
。因此,对于
dtble
,它是不正确的。它首先有七个相似的字符。我尝试使用
StartWith()
SubString()
使其工作。但我不知道如何添加到Linq代码中。我有一种强烈的感觉,他所指的数组就是数据表:)我从一个网站获得
array
,从另一个网站获得
dtble
array={12,Luvis走,1 | 34,Selena不在这里,0}
像这样!在
数组
dtble
index=1
中,使用相同的名字。如果第一个相同,如Levis或Selena,我会检查是否正确,这两个结构是否相同,请将详细信息包括在问题中?对于示例输入和预期输出,您的方法
GetFirstWord(“Levis Get out”)
将返回
Levis
?如果名称为:
Join Chen
。我想在分割后得到第二根字符串(“”)。@VănLộ所以datatable中的第一个单词是名称,您需要检查数组中是否有匹配的单词?还是数组中的第一个字以及datatable中名称中的任何匹配项?请具体说明。@VănLộc因为在您的注释示例中,双方都完全按照第一个单词匹配。我尝试了以下方法:
array[1]。StartsWith(l.Field(“Name”)。Substring(0,7)
。它似乎适合我。但我不知道如何插入此LinQ。您能帮我吗?@VănLộc虽然我不完全理解你是如何在查询中使用固定索引的,但这不是一件好事。在大多数情况下,你的方法
GetFirstWord(“Levis Get out”)
将返回
Levis
?如果名称是:
Join Chen
。我想在拆分后得到第二个字符串(“”)。@VănLộ所以datatable中的第一个单词是名称,您需要检查数组中是否有任何单词与之匹配?或者数组中的第一个单词与datatable中的名称是否匹配?请具体说明。@VănLộc因为在您的注释示例中,双方都完全按照第一个单词匹配。我尝试了以下方法:
array[1]。StartsWith(l.Field(“Name”)。Substring(0,7)
。它似乎适合我。但我不知道如何插入此LinQ。您能帮我吗?@VănLộ虽然我不完全理解在查询中如何使用固定索引,但这不是一件好事。