gpt4 book ai didi

c# - 没有行时如何处理 CopyToDataTable()?

转载 作者:IT王子 更新时间:2023-10-29 04:08:57 24 4
gpt4 key购买 nike

我有代码:

dt = collListItems.GetDataTable().AsEnumerable()
.Where(a => Convert.ToString(a["Expertise"]).Contains(expertise) && Convert.ToString(a["Office"]) == office)
.CopyToDataTable();

filteredCount = dt.Rows.Count();

当没有匹配的行时,我应该如何最好地处理事件?目前我得到“源不包含数据行”,但在这种情况下我想将 filteredCount 设置为 0。

提前致谢。

编辑:我知道 try..catch 有效,但有更优雅的方法吗?

最佳答案

您当然不想为此使用 try/catch。 Try/Catch 应该在真正异常的情况下使用,您不希望让它驱动您的控制流。在几乎所有情况下,都有更好的方法直接内置到语言/库中,或者只需要最少的编码工作。

在这种情况下,您希望事先捕获表,这样您就不会多次调用 GetDataTable() 方法,因为如果查询不需要,我们将需要它包括任何结果。如果查询本身成本高昂或运行时间长,您还可以选择在查询中包含 ToList(),这样您只需执行一次。

之后,就是测试结果中是否有任何行。如果是这样,您可以安全地复制到数据表。否则,只需克隆原始表的结构(不包括行),这样在任何一种情况下,您都有一个正确的表结构并且可以检查行数,将其绑定(bind)到控件,等等,没有惊喜。

var table = collListItems.GetDataTable();    
var rows = table.AsEnumerable().Where(...); // optionally include .ToList();
var dt = rows.Any() ? rows.CopyToDataTable() : table.Clone();
int filteredCount = dt.Rows.Count;

关于c# - 没有行时如何处理 CopyToDataTable()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7815916/

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