我有类别列表,每个类别都有密钥Name
和密钥Items
,这是文件列表。
我想从列表中提取具有所需名称的类别(如果找不到,则返回null
)。然后检查,如果类别不是null
,请填写其Items
...
categories = List<Category>
var desiredCategory = categories.FirstOrDefault(c => c.Name == "DesiredName");
desiredCategory - if not null ?
foreach (var file in files)
{
desiredCategory.Items.Add(file);
}
以上是我想要实现的代表性代码,我的问题是:如何以最简单的方式完成?使用LINQ或其他什么?
编辑:如果我不想对desiredCategory
变量进行操作但是直接继续categories.FirstOrDefault(c => c.Name == "DesiredName")
会怎样?
例如:
categories.FirstOrDefault(c => c.Name == "DesiredName").WhenIsNotNull()...
如何使用WhenIsNotNull
的括号?
答案 0 :(得分:0)
鉴于这些逻辑上是两个单独的动作(找到具有所需名称的类别,填充类别的项目),我不认为上述方法是一个问题。您可以稍微整理一下代码:
categories.SingleOrDefault(c => c.Name.Equals("desiredname", StringComparison.OrdinalIgnoreCase))
如果您确定只希望有一个或没有,请使用单个并捕获结果异常。比较字符串的值时,应使用Equals覆盖并提供比较提示。
然后,对于项目:
desiredCategory.Items.AddRange(files)
编辑后。
您可以使用扩展方法执行此操作:
public static void WhenNotNull<T>(this T item)
{
if (item != default(T))
// Do stuff
}