在C#中使用可枚举的.Any()将LINQ用于数据集时,如何添加多个条件?
我试图检查dataTable中是否存在值 代码为:在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
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ộ虽然我不完全理解在查询中如何使用固定索引,但这不是一件好事。