我有这段代码:
DataTable dtDataTable = …;
var rows = dtDataTable.AsEnumerable();
var test = rows.Select(x => x["id"]).Distinct().Count() != rows.Count();
if (test)
{
MessageBox.Show("test");
return false;
}
Run Code Online (Sandbox Code Playgroud)
问题:如果test应该为true,则if语句中的代码不会被执行.我似乎无法调试它(它只是继续运行我的代码).
我想这可能都与延迟/立即执行的东西,但我不能找到一个解决方案(我已经尝试添加.ToList()后select话).
有任何想法吗?
首先,我认为这Dictinct会通过引用进行比较,因为DataRow索引器返回 anObject而不是int。所以我建议使用强类型Field扩展方法。但这不是您问题的原因。
因此,在您不知道原因之前,我建议您采用不同的(更有效的)方法来检查所有 ID 是否唯一:
var ids = rows.Select(r => r.Field<int>("ID"));
var duplicateIdChecker = new HashSet<int>();
bool isIdUnique = ids.All(duplicateIdChecker.Add);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
158 次 |
| 最近记录: |