gpt4 book ai didi

c# - LINQ 表达式 C# 中的条件

转载 作者:行者123 更新时间:2023-11-30 21:53:52 24 4
gpt4 key购买 nike

我是 LINQ 的初学者。我正在尝试使用在 Stack Overflow 上找到的 LINQ 表达式创建 CSV 文件:

var sb = new StringBuilder();

var headers = dgvDonnees.Columns.Cast<DataGridViewColumn>();
sb.AppendLine(string.Join(",", headers.Select(column => "\"" + column.HeaderText + "\"").ToArray()));

foreach (DataGridViewRow row in dgvDonnees.Rows)
{
var cells = row.Cells.Cast<DataGridViewCell>();
sb.AppendLine(string.Join(",", cells.Select(cell => "\"" + cell.Value + "\"").ToArray()));
}

我想将这个简单的条件添加到 foreach 循环中:(我在 for 循环中使用这个条件)

if (Convert.ToInt32(dgvDonnees.Rows[i].Cells[10].Value) == 0) continue;

我希望第 10 个单元格不为零的行出现在最终的 CSV 中。

我该怎么做?谢谢。

最佳答案

如果您真的想要一个 LINQ 解决方案,正如您的问题所暗示的那样,您将想要这样做:

foreach (DataGridViewRow row in dgvDonnees.Rows
.Where(r => Convert.ToInt32(r.Cells[10].Value) != 0))
{
var cells = row.Cells.Cast<DataGridViewCell>();
sb.AppendLine(string.Join(",", cells.Select(cell => "\"" + cell.Value + "\"").ToArray()));
}

换句话说,让 LINQ 为您进行过滤,而不是向循环体添加额外的语句。它更简洁,更正确地反射(reflect)了您正在寻找的语义(即代码看起来更像您的规范“我想要第 10 个单元格不为零的行”,而使用 continue 在循环中需要根据规范实际是什么的反向逻辑表达式)。

关于c# - LINQ 表达式 C# 中的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33618655/

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