从此数组返回已开始但尚未结束的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"
答案 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);