在下面的簡化示例中,如果不存在任何匹配,我想將Containers設置爲null
。Linq沒有結果返回null
_viewModel.Materials = _jobMaterials.Select(x=> new {
//Containers that the material my be in
Containers = (materialContainers.Where(mcl => mcl.Field<string>("MATKey") == x.Field<string>("MATKey")).Any()) ?
materialContainers.Where(mcl => mcl.Field<string>("MATKey") == x.Field<string>("MATKey")).Select(mcl => new
{
Id = mcl.Field<int>("SERIDNumber"),
Description = mcl.Field<string>("SERDescription").Trim(),
Volume = mcl.Field<int>("SERVolume"),
ContractedStatus = mcl.Field<int>("Contracted"),
OnJob = Convert.ToBoolean(mcl.Field<int>("OnJob"))
}) : null
});
上面的作品,但是有沒有更簡潔的方法?就像DefaultIfEmpty
和FirstOrDefault
的組合一樣。
無論工作在隔離,FirstOrDefault
返回時有多個匹配,而DefaultIfEmpty
返回包含null
集合,如果沒有匹配的單個項目。
沒有內置。定義你自己的幫手方法。現在查詢代碼非常冗餘且不可讀。 – usr 2015-02-24 10:57:10
同意,因此查詢;)謝謝,是有道理的 – SWa 2015-02-24 11:06:19