[c#]不能正确执行 LINQ

标签: Linq C#
发布时间: 2017/2/28 21:43:08
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有这段代码︰

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 已经)。

有什么想法?

解决方法 1:

首先我认为 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);
官方微信
官方QQ群
31647020