查找数据集中的同一ID是否存在两个值

时间:2019-03-08 14:57:28

标签: c# asp.net .net linq

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

我试图找到最快的方法来查看是否存在针对同一ProcessID的AcitonCodes A和E。

我正在找到所有这些有关如何在数据表中搜索值的示例,但无法弄清楚如何将其限制为相同的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是实现此目标的最佳方法吗?我应该使用“较新的”和更优选的名称空间吗? 谢谢!

2 个答案:

答案 0 :(得分:0)

在没有IDE的情况下,我出现了以下LINQ,可能需要进行调整:

Child object

答案 1 :(得分:0)

这应该为您带来所需的东西(Here is full DotNetFiddle Example of the below):

    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();