根据数据表中的列筛选可观察集合中的数据

本文关键字:观察 集合 数据 数据表 筛选 | 更新日期: 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查询有点棘手,所以如果其中有错误,请原谅我。