C# c LINQ)如何删除数据表中与列表和特定值匹配的行?
我有数据表,数据如下:C# c LINQ)如何删除数据表中与列表和特定值匹配的行?,c#,linq,list,datatable,C#,Linq,List,Datatable,我有数据表,数据如下: Couponid STATE 20160406000033 A 20160406000051 A <--- I don't want this row 20160406000051 K 20160406000051 K 我有一张优惠券,包括20160406000051 现在,我只想复制整个数据表,不包括与列表匹配且同时具有“A”值的行。 如果Couponid与列表匹配且值为“K”,则它必须保留在D
Couponid STATE
20160406000033 A
20160406000051 A <--- I don't want this row
20160406000051 K
20160406000051 K
我有一张优惠券,包括20160406000051
现在,我只想复制整个数据表,不包括与列表匹配且同时具有“A”值的行。
如果Couponid与列表匹配且值为“K”,则它必须保留在DataTable中
换一种说法,
在处理每一行时
如果一行不属于该列表,则该行必须保留在DataTable中
但是,如果一行属于列表,并且该行具有“a”值,则必须排除该行,但属于列表且具有“K”值的其他行必须保留在DataTable中
我使用了一对循环来实现这一点,但它花费了太多的时间
我认为下面的代码将数据表划分为是否属于列表的行,而我需要同时属于列表的行和不属于列表的行
IEnumerable<DataRow> rows_query = from r in dt.AsEnumerable()
where !list_coupon.Contains(r.Field<string>("Couponid")) &&
r.Field<string>("STATE") != "A"
select r;
dt = rows_query.CopyToDataTable();
非常感谢您的宝贵意见
非常感谢你 从你的解释中,我了解到你想要的是列表中没有的每一行,或者列表中的每一行,但是它们的值不同于A 您需要在linq | |中使用or运算符
检查是否有行是很好的,因为如果linq没有返回任何行,CopyToDataTable将引发异常。因此根据您的解释,我理解您想要列表中没有的或列表中的但值与A不同的每一行 您需要在linq | |中使用or运算符
最好检查是否有行,因为如果linq没有返回行,CopyToDataTable将引发异常。只需将查询更改为
IEnumerable<DataRow> rows_query = from r in dt.AsEnumerable()
where !(list_coupon.Contains(r.Field<string>("Couponid")) &&
r.Field<string>("STATE") == "A")
select r;
dt = rows_query.CopyToDataTable();
不要让not操作员同时接触这两个部件,这样它将顺利工作
希望它能帮助您。只需将查询更改为
IEnumerable<DataRow> rows_query = from r in dt.AsEnumerable()
where !(list_coupon.Contains(r.Field<string>("Couponid")) &&
r.Field<string>("STATE") == "A")
select r;
dt = rows_query.CopyToDataTable();
不要让not操作员同时接触这两个部件,这样它将顺利工作
希望对您有所帮助。如果答案对您有效,请接受答案。@Viplock,有些事情很奇怪…我正在分析。。请等待如果答案对您有效,请接受答案。@Viplock,有些事情很奇怪…我正在分析。。请等待非常感谢您分享您的精彩知识!很好用!此外,您能否提供SQL语句,该语句对删除属于列表且具有值“A”的行具有相同的意义?@KayLee堆栈溢出的策略是每个帖子问一个问题。问另一个问题,有人会回答你。非常感谢分享你的优秀知识!很好用!此外,您能否提供SQL语句,该语句对删除属于列表且具有值“A”的行具有相同的意义?@KayLee堆栈溢出的策略是每个帖子问一个问题。问另一个问题,有人会回答你。我还想对你的渊博知识表示深深的感谢。请让我明白,两个答案都是正确的,但另一个答案早就提供了。此外,请您提供SQL语句,如果行属于列表并具有值“A”,则该语句对删除行具有相同的意义。这很好,我不要求接受我的答案。我要求接受任何恰当的、令你满意的回答我还想对您的卓越知识表示深深的感谢。请您理解两个答案都是正确的,但另一个答案是在前面提供的。此外,如果属于列表并具有值“A”,您能否提供SQL语句,该语句对删除行具有相同的意义?这非常好,我没有要求接受我的回答。我要求接受任何恰当的、令你满意的回答