C# 如何使用.Net Linq获取家长记录
我有一个叫做dt的数据表 这个表中有记录C# 如何使用.Net Linq获取家长记录,c#,.net,linq,C#,.net,Linq,我有一个叫做dt的数据表 这个表中有记录 ID Code FullTxt ParentID 1 A Tom NULL 2 A1 John 1 3 A2 Rich 1 4 A11 Carol 2 5 A12 Nancy 2 6 A21 Ali 3 7 B Mark NULL 当用户搜索A21时,我过滤dt以查找A21,然后将其作为更新的数据表发送 这是我的密码 DataTable dx =
ID Code FullTxt ParentID
1 A Tom NULL
2 A1 John 1
3 A2 Rich 1
4 A11 Carol 2
5 A12 Nancy 2
6 A21 Ali 3
7 B Mark NULL
当用户搜索A21时,我过滤dt以查找A21,然后将其作为更新的数据表发送
这是我的密码
DataTable dx = null;
var rows = dt.AsEnumerable()
.Where(x => x["FullTxt"].ToString().Contains(SearchTxt)
|| x["Code"].ToString().Contains(SearchTxt)
);
if (rows.Any())
dx = rows.CopyToDataTable();
我需要在此筛选器中包括家长记录
如果用户搜索A21
然后,这些记录应包含在过滤结果中
ID Code FullTxt ParentID
1 A Tom NULL
3 A2 Rich 1
6 A21 Ali 3
我尝试将我的代码更新到此版本,但它不起作用
var rows = dt.AsEnumerable()
.Where(x => x["FullTxt"].ToString().Contains(SearchTxt)
|| x["Code"].ToString().Contains(SearchTxt) || x["ID"] = x["ParentID"]
);
知道如何让它工作吗?类似于:
var rows = dt.AsEnumerable().Where(x => searchText.Contains((string)x["Code"])).ToList();
var parentRows = dt.AsEnumerable().Where(x => x["ParentID"] != DBNull.Value && searchText.Contains((string)x["Code"])).Select(x => (int)x["ParentID"]).ToList();
其中,x.Fieldvar rows = dt.AsEnumerable().Where(x => searchText.Contains((string)x["Code"])).ToList();
var parentRows = dt.AsEnumerable().Where(x => x["ParentID"] != DBNull.Value && searchText.Contains((string)x["Code"])).Select(x => (int)x["ParentID"]).ToList();
你在正确的轨道上 类似于:
var rows = dt.AsEnumerable().Where(x => searchText.Contains((string)x["Code"])).ToList();
var parentRows = dt.AsEnumerable().Where(x => x["ParentID"] != DBNull.Value && searchText.Contains((string)x["Code"])).Select(x => (int)x["ParentID"]).ToList();
其中,x.Fieldvar rows = dt.AsEnumerable().Where(x => searchText.Contains((string)x["Code"])).ToList();
var parentRows = dt.AsEnumerable().Where(x => x["ParentID"] != DBNull.Value && searchText.Contains((string)x["Code"])).Select(x => (int)x["ParentID"]).ToList();
你在正确的轨道上 您可以只获取与搜索匹配的记录,然后递归地获取它的父项并连接结果。这只是部分LINQ解决方案,但应该很简单。您可以只获取与搜索匹配的记录,然后递归地获取其父项并连接结果。这只是部分LINQ解决方案,但应该很简单