首页 > 解决方案 > 查找数据集中相同 ID 是否存在两个值

问题描述

我有一个数据表结果集,它有两列我需要关注 ActionCode 和 ProcessID

我试图找到最快的方法来查看是否同时存在 AcitonCodes A 和 E,两者都用于相同的 ProcessID。

我正在寻找如何在数据表中搜索值的所有这些示例,但无法弄清楚如何将其限制为相同的 ID。请帮忙。

这现在有效,它返回所有 A 和 E 行,但我似乎无法找到仅当 A 和 E 都属于同一个 ProcessID 时返回结果的方法。

DataRow[] foundAuthors = dt.Select("ActionCode = '" + 'A' + "' or ActionCode = '" + 'E' + "'" );

var x = from e in dt.AsEnumerable()
                                where e.Field<int>("ActionCode") == 'A' &&
                                      e.Field<int>("SeriesID") == seriesid
                                select e;

最后一个问题。LINQ 是解决这个问题的最佳方式吗?我应该使用“更新”和更喜欢的命名空间吗?谢谢!

标签: c#asp.net.netlinq

解决方案


这应该可以为您提供所需的内容(以下是完整的 DotNetFiddle 示例):

    string[] myList = new string[]{"A", "E"};

    var results = authors.Where(x => myList.Contains(x.ActionCode))
                        .GroupBy(x => x.ProcessId, x => x.ActionCode)
                        .Where(d => myList.All(dv => d.Contains(dv)))
                        .Select(x => new { ProcessId = x.Key, ActionCode = x.ToList()} ).ToList();

推荐阅读