【问题标题】:LINQ: Get all items of a list within a listLINQ:获取列表中列表的所有项目
【发布时间】:2012-12-11 21:02:25
【问题描述】:

我有一个 ObservableCollection,其中包含另一个 ObservableCollection。

ObservableCollection<MyModel> models = new ObservableCollection<MyModel>();

我的模型是这样的:

public class MyModel
{
    public ObservableCollection<MyModel2> list2 { get; set; }
    public string Property1 { get; set; }
}

public class MyModel2
{
    public string Property2 { get; set; }
    public string Property3 { get; set; }
}

现在我想在 "Property2" == "test1" 和 "Property3" == "test2" 的模型中找到所有 MyModel2 项目

我知道如何只在一个 list2 中搜索以找到正确的项目,但我想在模型集合中搜索所有“list2”。

var result = from mod 
             in list2
             where mod.Property2 == "test1" && mod.Property3 == "test2"
             select mod;

任何帮助将不胜感激。

【问题讨论】:

    标签: c# linq


    【解决方案1】:

    听起来你想要这样的东西:

    var query = from model in models
                from model2 in model.list2
                where model2.Property2 == "test1" && model2.Property == "test2"
                select model2;
    

    或非查询表达式形式:

    var query = models.SelectMany(model => model.list2)
                      .Where(model2 => model2.Property2 == "test1"
                                       && model2.Property == "test2");
    

    【讨论】:

    • .Select => .SelectMany?
    【解决方案2】:
    var result =
        models.SelectMany(item => item.list2.Where(model => model.Property2 == "test1" && model.Property3 == "test2"));
    

    【讨论】:

      【解决方案3】:

      Enumerable.SelectManyEnumerable.Where 在“内部”列表中:

      models.SelectMany(m => 
          m.list2.Where(m2 => m2.Property2 == "test1" && m2.Property3 == "test2"));
      

      【讨论】:

        猜你喜欢
        • 2011-03-17
        • 1970-01-01
        • 1970-01-01
        • 2010-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多