假設我有這樣的定義域類:使這一LINQ投影查詢更好
public class MyDomainItem
{
public string PropertyA {get;set;}
public string PropertyB {get;set;}
public string ItemStatus {get;set;}
public ClassA ObjectA {get;set;}
public ClassB ObjectB {get;set;}
}
然後,我有一個LINQ查詢,看起來像這樣:根據我所知道的
var mylist = from a in someList
join b in someOtherList on a.Id equals b.Id
select new MyDomainItem
{
PropertyA = a.SomeProperty,
PropertyB = b.SomeOtherProperty,
ObjectA = a,
ObjectB = b
}
,我可以解決ItemStatus
有兩種方法:
foreach(var i in mylist)
{
if (i.ObjectA.YetAnotherProperty == "some criteria")
{
if (i.ObjectA.NestedObject.NestedProperty == "price is missing")
{
i.ItemStatus = "bad - category 1";
}
else
{
i.ItemStatus = "bad - category 2";
}
}
else
{
i.ItemStatus = "good";
}
}
或調用功能,在LINQ QUER解決y:
var mylist = from a in someList
join b in someOtherList on a.Id equals b.Id
select new MyDomainItem
{
PropertyA = a.SomeProperty,
PropertyB = b.SomeOtherProperty,
ObjectA = a,
ObjectB = b,
ItemStatus = ResolveStatus(a)
}
我腦海中有些東西只是不停地說,一定有更好的辦法。我真的很喜歡做的事情大致是這樣的:
var mylist = from a in someList
join b in someOtherList on a.Id equals b.Id
select new MyDomainItem
{
PropertyA = a.SomeProperty,
PropertyB = b.SomeOtherProperty,
ObjectA = a,
ObjectB = b,
ItemStatus =()=>
{
if (a.ObjectA.YetAnotherProperty == "some criteria")
{
if (a.ObjectA.NestedObject.NestedProperty ==
"price is missing")
{
return "bad - category 1";
}
else
{
return "bad - category 2";
}
}
else
{
return "good";
}
}
}
是否有類似的東西,我可以做什麼?
在此先感謝... !!!
http://codereview.stackexchange.com/ – 2012-03-15 21:22:54
你爲什麼更喜歡上一個版本?使用方法似乎是最合理和可讀的 – BrokenGlass 2012-03-15 21:24:07
匿名方法中的「i」是什麼? – 2012-03-15 21:34:34