我的表有两列id,parentid,我想过滤数据以选择有parentid的行(因为可能有没有parentid行的行)。
id parentid 1 null 2 1 3 1 4 2 5 10
我希望除了5,10以外的所有行都不是作为父级的子行(除非父级在那里,否则没有子级)。
我想要使用parentid的行,因为我正在使用树视图的数据。 我尝试了几种方法但没有得到我想要的东西。
var mycol = from t in ds.Tables[0].AsEnumerable()
where t.Field<int>("Id") == t.Fields<int>("ParentId");
select t;
或
DataRow[] drs = ds.Tables[0].Select("ParentId in Id");
答案 0 :(得分:0)
要使ParentId
的行不为空,请使用
var rows = from r in ds.Tables[0].Rows.AsEnumerable()
where !r.IsNull("ParentId")
select r;
或
var rows = ds.Tables[0].Rows.AsEnumerable().Where(r => !r.IsNull("ParentId"));
答案 1 :(得分:0)
目前还不清楚你想要什么。
如果您想要ParentId不为null的行,请使用其他答案之一。
如果您想要在数据集中某处使用Id作为ParentId的行,请使用以下内容:
var table = ds.Tables[0];
var parentIds = new HashSet<int>(
from row in table.AsEnumerable()
let parentId = row.Field<int?>("ParentId")
where parentId != null
select parentId.Value);
var rowsWhereIdIsAParentId =
from row in table.AsEnumerable()
let id = row.Field<int>("Id")
where parentIds.Contains(id)
select row;