gpt4 book ai didi

c# 检查 datagridview 列是否包含值 & linq First() 与 FirstOrDefault()

转载 作者:行者123 更新时间:2023-12-02 19:49:01 26 4
gpt4 key购买 nike

我需要检查 DataGridView 中的第一列是否包含值 10

我用过这个

int index = -1;  
index = (dgv.Rows.Cast<DataGridViewRow>()
.Where(r => r.Cells[0].Value.Equals(10))
.Select(r => r.Index)).First();

但有时会产生错误:序列不包含元素

此论坛上有人建议使用 FirstOrDefault() 而不是 First()

这是可行的,但是如果第一行的第一列包含值 10或者没有第一列包含值 10 的行,变量索引的值为 0

我的解决方案是:

try {
index = (dgv.Rows.Cast<DataGridViewRow> ()
.Where(r => r.Cells[0].Value.Equals(10))
.Select(r => r.Index)).First();
} catch {
index = -1
}

最诚挚的问候,

最佳答案

I need to check if first column in DataGridView contains value 10

该作业的正确工具(方法)是.Any,如果集合中的任何项目满足给定条件,则返回true,如果不满足或集合满足,则返回 false空。

if (dgv.Rows.Cast<DataGridViewRow>().Any(r => r.Cells[0].Value.Equals(10)))
{
// exists
}
else
{
// not exist
}

如果您确实需要索引值,请使用 .DefaultIfEmpty 方法在集合为空或未找到所需值时返回默认值。

var index = dgv.Rows.Cast<DataGridViewRow>()  
.Where(r => r.Cells[0].Value.Equals(10))
.Select(r => r.Index)
.DefaultIfEmpty(-1)
.First();

使用.DefaultIfEmpty,您可以“告诉”代码的读者您的实际意图,而无需额外条件或空传播器。
并且因为您提供了默认值以防返回空集合,所以您可以安全地使用 .First() 方法,因为至少会返回一个项目。

要查找给定值的所有出现情况,请勿使用 FirstFirstOrDefault

关于c# 检查 datagridview 列是否包含值 & linq First() 与 FirstOrDefault(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58656622/

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