我有一个ObservableCollection
(像用户名,名字,姓氏,密码,地址,联系人等等字段),其中包含一大堆行,而且我还有一个数据表(像SNo,用户名, status)只有有限的行数。
现在我需要根据数据表中数据表中的用户名过滤ObservableCollection
,并使用linq将ObservableCollection
绑定到数据网格。
我做了一个样本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等。
请给我一个过滤数据的解决方案。
答案 0 :(得分:1)
您当前的查询显示“数据表中有一行a.UserName”,当您听起来希望查询说“数据表的某一行包含特定列中的.UserName”时。你可以通过做这样的事情来使这一点更清楚(不确定你的确切类型是什么,所以这只是一些伪问题):
var usernamesInDataTable = dtStatusTable.Rows.Select(r => r.UserName);
var query = from a in ObservableClass
where userNamesInDataTable.Contains(a.UserName)
select a;
答案 1 :(得分:0)
也许您可以执行以下操作,选择与username
完全匹配的项目:
YourObservableCollection = new ObservableCollection<YourDataType>(
from item in YourObservableCollection
join row in YourDataTable on item.username equals row.username
select item);
在没有数据和智能感知的情况下编写LinQ
查询有点棘手,所以如果有错误,请原谅我。