迭代 DataTable 以查找 List 对象中的元素?
当我迭代 DataTable 对象时,我需要根据通用字符串 List 中的项目检查其每个 DataRow 对象。
我找到了一篇博客文章使用 List 的 Find 方法和委托,但尽管该示例有一个单独的类 (Person),但我正在尝试使用 string 对象的实例执行以下操作:
// My definition of the List object.
List<string> lstAccountNumbers = new List<string>();
...
// I populate the List via its Add method.
...
foreach (DataRow drCurrentRow in dtMyDataTable.Rows)
{
if (lstAccounts.Find(delegate(string sAccountNumber) { return sAccountNumber == drCurrentRow["AccountNumber"]; })
{
Found_DoSomething();
}
else
{
NotFound_DoSomethingElse();
}
}
但是,使用此语法我收到 if 块的“无法将类型‘string’隐式转换为‘bool’”。
有人可以澄清我做错了什么以及如何最好地完成我想做的事情吗?
As I iterate through a DataTable object, I need to check each of its DataRow objects against the items in a generic string List.
I found a blog post using the List's Find method along with a delegate, but whereas that example has a separate class (Person), I'm attempting something like the following using an instance of the string object:
// My definition of the List object.
List<string> lstAccountNumbers = new List<string>();
...
// I populate the List via its Add method.
...
foreach (DataRow drCurrentRow in dtMyDataTable.Rows)
{
if (lstAccounts.Find(delegate(string sAccountNumber) { return sAccountNumber == drCurrentRow["AccountNumber"]; })
{
Found_DoSomething();
}
else
{
NotFound_DoSomethingElse();
}
}
However, with this syntax I'm receiving "Cannot implicitly convert type 'string' to 'bool'" for the if block.
Could someone please clarify what I'm doing wrong and how best to accomplish what I'm trying to do?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
相同的委托不同的方法。
您想使用“Exists Not Find”。
Find 返回值,exists 返回布尔值。
Same Delegate Different method.
You want to use Exists Not Find.
Find Returns a value while exists returns a bool.
为什么这对你不起作用?
why would not this work for you?
问题在于
if (lstAccounts.Find
部分。如果找到,此
Find
将返回一个字符串,而if
需要 bool 输出。更改您的语句使用
Exists
或将原始值与Find
结果进行比较。The problem is the
if (lstAccounts.Find
part.This
Find
will return a string if found and theif
is expecting a bool output.Change your statement to use
Exists
or compare your original value to theFind
result.列表Find方法返回一个字符串,因此您应该使用Equals方法或==进行比较。在这种情况下if 条件就可以了。
The list Find method returns a string so you should compare it using Equals method or ==.In that case the if condition will be fine.
; 创建一个接受 col 名称等的帮助程序;
尝试使用 linq,您可以使用 System
使用系统集合;
使用 System.Collections.Generic;
使用系统数据;
使用 System.Linq;
使用系统.Web;
使用 System.Web.UI;
使用 System.Web.UI.WebControls;
命名空间 WebApplication1
{
公共部分类 _Default :System.Web.UI.Page
{
protected void Page_Load(对象发送者,EventArgs e)
{
DataTable 表 = new DataTable();
table.Columns.Add("col1", typeof(string));
代码
从此网址获取
迭代 DataTable 以查找列表中的元素对象?
try using linq, you can create a helper that takes in col name etc...
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
DataTable table = new DataTable();
table.Columns.Add("col1", typeof(string));
}
taken code from this url
Iterate through a DataTable to find elements in a List object?