我有一个DataTable,我已将其转换为列表。我想知道如何查询列表并创建一个父列表为空的新列表。
DataTable myTable = new DataTable();
myTable.Columns.Add("ParentID", typeof(string));
myTable.Columns.Add("ID", typeof(string));
myTable.Rows.Add(null, "CEO");
myTable.Rows.Add("CEO", "FD");
myTable.Rows.Add("CEO", "CIO");
List<DataRow> lst = myTable.AsEnumerable().ToList();
我正在尝试类似的事情:
List<DataRow> topNodes = lst.Select("ID is null")
感谢。
答案 0 :(得分:0)
尝试一下,假设您可以使用LINQ
var topNodes = lst.Where(l => (!(l.ID.HasValue))).ToList();
编辑:
我看到你的ID是String
,所以它应该是这样的:
var topNodes = lst.Where(l => ID.IsNullOrEmpty()).ToList();
编辑:
列表为DataRow
所以:
var topNodes = lst.Where(row => row["ID"].IsNullOrEmpty()).ToList();
编辑:
您添加了有关您要执行的操作的更多信息。如果您只需要列表或DataRow
,我会先过滤,然后转换为列表:
var topNodes = myTable.Select("ID is null").AsEnumerable().ToList();
答案 1 :(得分:0)
您可以尝试此操作 - 搜索连续的所有单元格,其内容为null。请注意,在这种情况下(对于给定的输入 - ParentId列的类型为string),行值必须转换为字符串:
// get only those items where ParentId is null
var topRows = myTable
.AsEnumerable()
.ToList()
.Where (row => string.IsNullOrEmpty(row["ParentID"].ToString()))
.ToList();
给定输入的输出(作为DataRows列表)是:
ParentID | ID
-------------------
null | CEO
答案 2 :(得分:0)
注意:请参阅原始帖子下的评论。
List<DataRow> lst = myTable.Select("ParentID is null").ToList();
编辑:我看到我的回答与Kris Ivanov非常相似,但是我的回答有点简单,并且没有使用有害的var关键字,我建议在评论中首先使用Table.Select。所以,我会留下它。