根据数组内容返回值

时间:2018-08-09 14:08:34

标签: c# arrays

从此数组返回已开始但尚未结束的ID的最佳方法是什么。我一直在尝试通过循环查找匹配的ID,然后检查状态为“开始”或“结束”,但是我一直与我选择的ID和状态进行匹配。 (即,我选择array [0,0]并查找ID 5847,它本身会匹配)。

array[0,0] = "5847"
array[0,1] = "started"
array[1,0] = "5846"
array[1,1] = "ended"
array[2,0] = "5846"
array[2,1] = "started"
array[3,0] = "5845"
array[3,1] = "ended"
array[4,0] = "5845"
array[4,1] = "started"
array[5,0] = "5844"
array[5,1] = "ended"

1 个答案:

答案 0 :(得分:0)

将2D投影到一个对象中,因为您似乎具有基于行的对象。
然后对ID进行分组,并采用Ended = 1 / Started = 0

的最大值
var result =
   Enumerable
    .Range(0, array.GetLength(0))
    .Select(row => new Foo { id = int.Parse(array[row, 0]), ended = (array[row, 1] == "ended") })
    .GroupBy(g=> g.id)
    .Select( g=> new { Id=g.Key, MaxEnded= g.Max(r=> r.ended)})
    .Where(x=> !x.MaxEnded);

C# Exemple