我如何过滤表和选择行有parentid在id列

本文关键字:选择 parentid id 何过滤 过滤 | 更新日期: 2023-09-27 18:18:24

我的表有两列id, parentid,我想过滤数据以选择有parentid的行(因为可以有行没有parentid行)。

<>之前id parentid1空2 13个14个25 10之前

我想要除5,10以外的所有行,因为10不是作为父元素存在的(除非父元素存在,否则没有子元素)。

我想要行与parentid,因为我使用的数据为treeview。我已经尝试了几种方法,但都没有得到我想要的。

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");

我如何过滤表和选择行有parentid在id列

不清楚你想要什么

如果想要ParentId不为空的行,请使用其他答案之一。

如果您希望在数据集中的某个地方使用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;

获取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"));