只要列表頂部的項目具有特定值的屬性,我如何選擇列表的頂部。選擇Top(x),而x.Kind =「value」
我需要Linq語句來查看序列中有一箇中斷,並且只返回前兩個項目。問題是我不知道有多少物品會有正確的屬性值。
我一直在通過LinqPad 4解決這個問題。下面的代碼是LinqPad 4的副本和過去的代碼。結果「q」不應該包含SomeData,因爲有效日期爲4/5/2011,因爲Kind hsc2的財產是「KindTwo」。
我正在嘗試查找「Kind」的最重新值的值,然後只取與該值匹配的最高記錄,直到找到與該值不匹配的記錄。
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;}
}
您不是第一個推薦TakeWhile解決方案的人,但是您是第一個從查詢中刪除where子句的人,並且這是我的阻止問題。 – 2011-04-29 18:43:31