c# - 过滤掉 Linq 中的空值

标签 c# linq

我有以下(工作)代码。它非常不优雅,我认为它可以仅使用 Linq 进行重构,从而避免 foreach 循环并必须依赖外部 List<>。这个怎么做?谢谢

  List<string> answerValues = new List<string>();
  foreach (Fillings filling in fillings)
  {
      string answer = filling.Answers.Where(a => a.Questions == question)
          .Select(a => a.Answer).FirstOrDefault();
      if (!string.IsNullOrEmpty(answer)) answerValues.Add(answer);
  }

最佳答案

IEnumerable<string> answerValues = fillings
                                    .SelectMany(f => f.Answers)
                                    .Where(a => a.Questions == question)
                                    .Select(a => a.Answer)
                                    .Where(ans => !string.IsNullOrEmpty(ans));

或者如果您需要一个列表:

IList<string> answerValues = fillings
                                    .SelectMany(f => f.Answers)
                                    .Where(a => a.Questions == question)
                                    .Select(a => a.Answer)
                                    .Where(ans => !string.IsNullOrEmpty(ans))
                                    .ToList();

关于c# - 过滤掉 Linq 中的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8502237/

相关文章:

c# - 可变上下文问题

c# - AcceptAllChanges 导致 Entity Framework ... 不接受更改?

java - Android 上的最佳方式或类似的 lambda 表达式或 linq(eclipse)

c# - 我应该如何将以下 C# 语句转换为 vb.net?

c# - ICommand 不将更改推送到 Windows UWP 中的 UI

c# - C# mysql command.ExecuteNonQuery 返回什么?如果是删除操作

linq - 将 Linq ObjectQuery IQueryable 转换为 IEnumerable

c# - 使用 Linq 相交和求和列表

C# Linq Char 数组 Except() - 奇怪的行为

c# - 如何在前台应用程序处于事件状态时停止计划任务运行 Windows Phone 8