c# - Select Top(x) while x.Kind = "value" -
how select top of list long items @ top of list have property specific value.
i need linq statement see there break in sequence , return top 2 items. problem don't know how many items going have correct property value.
i have been working through problem linqpad 4. code below copy , past linqpad 4. results, "q", should not contain somedata effectivedate of 4/5/2011 because kind property on hsc2 "kindtwo".
i trying find value resent value of "kind" , take top records match value until record doesn't match value.
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 = new [] {hsc1, hsc2, hsc3, hsc4}; var lastsomedata = all.orderbydescending((x) => x.effectivedate).first(); lastsomedata.dump(); var q = h in h.kind == lastsomedata.kind orderby h.effectivedate descending select h; q.dump(); } // define other methods , classes here class somedata { public datetime effectivedate {get;set;} public string kind {get;set;} }
this working console application asked. not first propose use of takewhile in question, please not mark answer accepted one.
using system; using system.linq; namespace stackoverflow.com_questions_5825629_select_topx_while_x_kind_value { class program { static 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 = new[] { hsc1, hsc2, hsc3, hsc4 }; var lastsomedata = all.orderbydescending((x) => x.effectivedate).first(); var q = (from h in orderby h.effectivedate descending select h).takewhile(x => x.kind == lastsomedata.kind); var result = q.toarray(); foreach (var item in result) console.writeline(item); console.writeline(""); console.writeline("press key"); console.readkey(); } // define other methods , classes here class somedata { public datetime effectivedate { get; set; } public string kind { get; set; } public override string tostring() { return string.format(@"new somedata {{ effectivedate = new datetime({0}, {1}, {2}), kind = ""{3}"" }};", effectivedate.year, effectivedate.month, effectivedate.day, kind); } } } }
Comments
Post a Comment