gpt4 book ai didi

c# - 需要帮助来逆转此 Lambda 操作的逻辑

转载 作者:太空宇宙 更新时间:2023-11-03 18:24:44 25 4
gpt4 key购买 nike

我正在尝试学习 lambda 运算,但我不知道如何让它发挥作用。我所拥有的与我需要的相反,但我想不出我需要做什么来扭转它。

DataTable table1;
List<string> list1;
var duplicates = list1.AsEnumerable()
.Where(r => table1.AsEnumerable()
.Any(r2 => r2["ID"] as string == r.ToString()));

我基本上有一个购物车,在这个例子中是 table1 .当用户将商品添加到他们的购物车时,我想确保他们的购物车中不存在所述商品。所以我的 list1 有他们将要放入购物车的商品的 ID,数据表是他们当前的购物车内容,并且有一个名为 ID 的列.所以我希望结果是 list1 的剩余项目在 ID 中找不到我表格的列。

以上将获取购物车中的所有商品。

我以为只是改变 ==!=会工作,但它不会。我发现了一堆有类似问题的不同线程,但我发现的所有线程都在比较两个相同的对象,比如两个具有相同列的数据表或两个 List<string>对象。他们说要使用关键字 Except .每次我尝试复制这些结果时,我都会遇到语法问题。

这是我从另一个线程尝试过的一件事,但它给了我 select 语句的语法错误。我试图根据以下线程中的答案得出结论:Use LINQ to get items in one List<>, that are not in another List<>

var result = list1.Where(p => !table1.Select(p2 => p2["RegID"] == p.ToString()));

如果您能给我任何帮助,我将不胜感激!

--约瑟夫

编辑这是我的工作代码。

DataTable table1;
List<string> list1;
var duplicates = list1.AsEnumerable()
.Where(r => table1.AsEnumerable()
.All(r2 => r2["ID"] as string != r.ToString()));

最佳答案

你几乎明白了,只需要取反(!)Any 表达式:

list1.Where(s => !table1.AsEnumerable().Any(r => r.Field<string>("ID") == s));

或者,您可以使用All:

list1.Where(s => table1.AsEnumerable().All(r => r.Field<string>("ID") != s));

关于c# - 需要帮助来逆转此 Lambda 操作的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37575702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com