以下是一些LinqPad测试代码。当运行此代码时,由于第二个“item”实例具有null子项列表而不是空列表,因此会出现错误。
我希望以完全相同的方式处理两种情况(null或空列表),但我想知道是否有比仅在列表上进行null检查并在存在null时初始化空列表更清晰的方法。
换句话说,我可以这样做:
但是这样有点丑,我想知道如何改进呢?
作为一个额外的问题,这个LINQ查询能否表示为lambda,并以同样的方式处理null值?
谢谢,Chris
我希望以完全相同的方式处理两种情况(null或空列表),但我想知道是否有比仅在列表上进行null检查并在存在null时初始化空列表更清晰的方法。
换句话说,我可以这样做:
from si in (i.subitems == null ? new List<item>() : i.subitems)
但是这样有点丑,我想知道如何改进呢?
public class item
{
public string itemname { get; set; }
public List<item> subitems { get; set; }
}
void Main()
{
List<item> myItemList = new List<item>()
{
new item
{
itemname = "item1",
subitems = new List<item>()
{
new item { itemname = "subitem1" },
new item { itemname = "subitem2" }
}
},
new item
{
itemname = "item2"
}
};
myItemList.Dump();
var res = (from i in myItemList
from si in i.subitems
select new {i.itemname, subitemname = si.itemname}).ToList();
res.Dump();
}
作为一个额外的问题,这个LINQ查询能否表示为lambda,并以同样的方式处理null值?
谢谢,Chris