使用LINQ如何从List中的List中进行选择
public class Model
{
public string application { get; set; }
public List<Users> users { get; set; }
}
public class Users
{
public string name { get; set; }
public string surname { get; set; }
}
List<Model> list = new List<Model>();
Run Code Online (Sandbox Code Playgroud)
我需要选择application ="applicationame"的列表和surname ="surname"的用户到一个列表中.
Tim*_*ter 28
如果您想通过以下方式过滤模型applicationname
和剩余模型surname
:
List<Model> newList = list.Where(m => m.application == "applicationname")
.Select(m => new Model {
application = m.application,
users = m.users.Where(u => u.surname == "surname").ToList()
}).ToList();
Run Code Online (Sandbox Code Playgroud)
如您所见,它需要创建新模型和用户列表,因此它不是最有效的方法.
如果您不希望过滤用户列表但是至少有一个用户具有给定用户名的用户过滤模型,请使用Any
:
List<Model> newList = list
.Where(m => m.application == "applicationname"
&& m.users.Any(u => u.surname == "surname"))
.ToList();
Run Code Online (Sandbox Code Playgroud)
您必须SelectMany
在纯LINQ中使用扩展方法或其等效语法.
(from model in list
where model.application == "applicationname"
from user in model.users
where user.surname == "surname"
select new { user, model }).ToList();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
133109 次 |
最近记录: |