gpt4 book ai didi

c# - LINQ 未正确执行

转载 作者:太空狗 更新时间:2023-10-29 21:39:04 26 4
gpt4 key购买 nike

我有这段代码:

DataTable dtDataTable = …;
var rows = dtDataTable.AsEnumerable();
var test = rows.Select(x => x["id"]).Distinct().Count() != rows.Count();
if (test)
{
MessageBox.Show("test");
return false;
}

问题:如果测试应该为真,if 中的代码语句不会被执行。我似乎无法对此进行调试(它只是继续运行我的代码)。

我认为这可能与延迟/立即执行有关,但我找不到解决方案(我已经尝试在 .ToList() 之后添加 select)。

有什么想法吗?

最佳答案

首先我认为 Dictinct 会通过引用进行比较,因为 DataRow 索引器返回一个 Object 而不是 int。所以我建议使用强类型的 Field 扩展方法。但这不是你的问题的原因。

因此,在您不知道原因之前,我建议您使用不同的(更有效的)方法来检查所有 ID 是否都是唯一的:

var ids = rows.Select(r => r.Field<int>("ID"));
var duplicateIdChecker = new HashSet<int>();
bool isIdUnique = ids.All(duplicateIdChecker.Add);

关于c# - LINQ 未正确执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27295394/

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