Below is some linqpad test code. When this runs it errors because the second instance of "item" has a null list of subitems as opposed to an empty list.
I want to treat both situations (null or empty list) in exactly the same way but I wondered if there was a cleaner way than just putting a null check on the list and initialising an empty list when there's a null.
in other words, I could do this:
from si in (i.subitems == null ? new List<item>() : i.subitems)
but that's a little ugly and I wondered how I could improve on that?
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();
}
as a bonus question, can this same linq query be represented as a lambda and treat nulls the same way?
Cheers, Chris