如何使用linq在列表中迭代以查找名称和值

本文关键字:查找 迭代 linq 何使用 列表 | 更新日期: 2023-09-27 18:01:02

我正在用.net开发一个MVC项目

{
    credit_id: "57214f73c3a3681e800005f4",
    department: "Production",
    id: 84493,
    job: "Casting",
    name: "Mickie McGowan",
    profile_path: "/k7TjJBfINsg8vLQxJwos6XObAD6.jpg"
},
{
    credit_id: "572294979251413eac0007e2",
    department: "Art",
    id: 7927,
    job: "Art Direction",
    name: "Ricky Nierva",
    profile_path: null
},
{
    credit_id: "572297cdc3a3682d240008f9",
    department: "Visual Effects",
    id: 7894,
    job: "Visual Effects",
    name: "Jean-Claude Kalache",
    profile_path: null
},

我把杰森放在一个名为"导演数据组"的列表中。我必须找到他们的部门"导演"的名字,并把他们添加到导演列表中。如何使用LINQ?

像这个

var directorsData = (tmdbMovie)JsonConvert.DeserializeObject<tmdbMovie>(findDirectors);
List<string> directors = new List<string>();
if (directorsData != null)
{
    if (directorsData.crew.Count != 0)
    {
        foreach (var item in directorsData.crew) 
        {
            var name = directorsData.crew. ===?
            directors.Add(name);
        }
    }
}

如何使用linq在列表中迭代以查找名称和值

使用Linq可以将所有名称作为列表,哪个部门是Directing

var nameList = directorsData.crew.Where(a =>a.department == "Directing")
                                 .Select(a => a.name).ToList();

此外,您还可以在反序列化中删除类型强制转换

var directorsData = JsonConvert.DeserializeObject<tmdbMovie>(findDirectors);

这将返回部门等于"Directing"的tmdbMovie类的集合。

var directingCollection = directorsData.crew.Where(x => x.Department.Equals("Directing"));

如果您只想要字符串集合中的名称,可以执行以下操作:

var nameCollection = directorsData.crew.Where(x => x.Department.Equals("Directing"))
                                       .Select(x => x.Name).ToList();

如果您想循环浏览所有名称,可以执行以下操作:

nameCollection.ForEach(x =>
{
    //X will be the string value of the name
    //Your code here
});