Как выбрать верхнюю часть списка, если элементы в верхней части списка имеют свойство с определенным значением.
Мне нужен оператор Linq, чтобы увидеть, что в нем есть разрывпоследовательность и единственное возвращают два верхних элемента.Проблема в том, что я не знаю точно, сколько элементов будет иметь правильное значение свойства.
Я работал над этой проблемой с LinqPad 4. Приведенный ниже код является копией и последним из LinqPad 4Результаты, "q", не должны содержать SomeData с EffectiveDate от 05.04.2011, потому что свойство Kind в hsc2 имеет значение "KindTwo".
Я пытаюсь найти значение, наиболее повторяющееся из значения "Добрый день », а затем возьмите только верхние записи, которые соответствуют этому значению, пока я не доберусь до записи, которая не соответствует этому значению.
void Main()
{
var hsc1 = new SomeData {EffectiveDate = new DateTime(2011,4,5), Kind = "KindOne"};
var hsc2 = new SomeData {EffectiveDate = new DateTime(2011,4,10), Kind = "KindTwo"};
var hsc3 = new SomeData {EffectiveDate = new DateTime(2011,4,20), Kind = "KindOne"};
var hsc4 = new SomeData {EffectiveDate = new DateTime(2011,4,25), Kind = "KindOne"};
var all = new [] {hsc1, hsc2, hsc3, hsc4};
var lastSomeData = all.OrderByDescending((x) => x.EffectiveDate).First();
lastSomeData.Dump();
var q = from h in all
where h.Kind == lastSomeData.Kind
orderby h.EffectiveDate descending
select h;
q.Dump();
}
// Define other methods and classes here
class SomeData
{
public DateTime EffectiveDate {get;set;}
public string Kind {get;set;}
}