0

我有一个ObservableCollection(如用户名、名字、姓氏、密码、地址、联系方式等字段),其中包含大量行,而且我有一个数据表(如 SNo、用户名、状态等列),其数量有限仅行数。

现在我需要根据数据表中数据表中存在的用户名进行过滤,并使用 linqObservableCollection将其绑定到数据网格。ObservableCollection我做了一个示例 linq Query 它不会产生确切的数据。

 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 等。请给我一个过滤数据的解决方案。

4

2 回答 2

1

您当前的查询说“数据表在哪里有一行 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;
于 2013-10-28T15:56:35.103 回答
0

也许你可以做这样的事情,它应该选择完全匹配的项目username

YourObservableCollection = new ObservableCollection<YourDataType>(
    from item in YourObservableCollection 
    join row in YourDataTable on item.username equals row.username
    select item);

在没有数据和智能感知的情况下编写LinQ查询有点棘手,所以如果其中有错误,请原谅我。

于 2013-10-28T15:54:30.627 回答