我有兩個元素的集合。我試圖在第一個集合中獲取第二個集合中具有匹配ID的所有元素,並針對匹配的元素運行CopyToDomain方法。有沒有更清晰簡潔的方式來表達更好的LINQ語句?
下面的代碼工作正常,但我有點驚訝其冗長。 ReSharper在這裏沒有推薦任何東西,但我想知道是否將兩個集合相交,然後將這個方法映射到元素上會更清楚?你會做出這樣的改變嗎,還是應該停下來大驚小怪,並保持原樣?
Task task = new Task();
IList<TaskAttributeDto> taskAttributeDtos = new List<TaskAttributeDto>();
taskAttributeDtos.Add(new TaskAttributeDto{ ID = 1});
taskAttributeDtos.Add(new TaskAttributeDto{ ID = 2});
foreach (TaskAttributeDto taskAttributeDto in taskAttributeDtos)
{
TaskAttribute matching = task.TaskAttributes.FirstOrDefault(t => t.ID == taskAttributeDto.ID);
if (matching != null)
{
taskAttributeDto.CopyToDomain(matching);
}
}
您可能有拼寫錯誤,其中'task'定義在哪裏? –
對不起,這只是一小段代碼。如果它相關,我可以提供整個事物,但它只是一個傳入方法的對象。 –
「清晰簡潔」非常含糊而主觀。我認爲你的原始代碼很簡單明瞭,而這些LINQ答案很難閱讀。但那只是我的個人意見;沒有真正正確的答案。 – nateirvin