从元素值为null的列表中删除

时间:2014-02-26 17:19:56

标签: c# asp.net-mvc linq list lambda

我正在尝试从列表中的列表中删除null。

例如:

responses.Questions[0].Options[0].Value = "asdf";
responses.Questions[0].Options[1].Value = null;
responses.Questions[0].Options[2].Value = 1;

我想删除列表中的第二个选项,因为该值为null。所以当我完成后,我有一个这样的列表:

responses.Questions[0].Options[0].Value = "asdf";
responses.Questions[0].Options[1].Value = 1;

我尝试了下面的代码,但似乎不起作用:

responses.Questions.Select(q => q.Options.RemoveAll(o => o.Value == null));

3 个答案:

答案 0 :(得分:2)

使用foreach

foreach(var q in responses.Questions)
{
    q.Options.RemoveAll(o => o.Value == null);
}

答案 1 :(得分:2)

试试这个

responses.Questions.ForEach(q => q.Options.RemoveAll(o => o.Value == null));

答案 2 :(得分:1)

使用Where子句排除null选项列表:

responses.Questions
    .Where(q => q.Options != null)
    .ForEach(q => q.Options.RemoveAll(o => o.Value == null));

(根据您之前删除的一条评论,由于Optionsnull,您会收到例外情况。)

注意:null值可以在此处显示在不同级别。 responsesQuestionsqOptions理论上可以都是null。适当时添加测试。