根据数据表中的列筛选可观察集合中的数据
本文关键字:观察 集合 数据 数据表 筛选 | 更新日期: 2023-09-27 18:37:20
我有一个包含大量行的ObservableCollection
(用户名,名字,姓氏,密码,地址,联系人号码等字段),并且我有一个数据表(像SNo,用户名,状态这样的列)只有有限数量的行。
现在我需要根据数据表中数据表中存在的用户名过滤ObservableCollection
,并使用 linq 将ObservableCollection
绑定到 datagrid。我做了一个示例 linq 查询它不会产生准确的数据。
var res = from a in Settings.GetInstance().ObservableClass
where dtStatusTable.Rows.Contains(a.UserName)
select a;
Settings.GetInstance().ObservableClass = res as ObservableCollection<IObservableClass >;
注意:UserName
是唯一的,可能包含相似但不准确。像用户名可能像Manikandan,Mani,ManikandanSekar等。请给我一个过滤数据的解决方案。
当前查询显示"其中数据表有一行 a.UserName",而听起来您希望查询显示"其中数据表有一行在特定列中包含 a.UserName"。你可以通过做这样的事情来更清楚地说明这一点(不确定你的确切类型是什么,所以这只是一些伪查询):
var usernamesInDataTable = dtStatusTable.Rows.Select(r => r.UserName);
var query = from a in ObservableClass
where userNamesInDataTable.Contains(a.UserName)
select a;
也许你可以做这样的事情,它应该选择完全匹配的项目username
:
YourObservableCollection = new ObservableCollection<YourDataType>(
from item in YourObservableCollection
join row in YourDataTable on item.username equals row.username
select item);
在没有数据和智能感知的情况下编写LinQ
查询有点棘手,所以如果其中有错误,请原谅我。