gpt4 book ai didi

c# - 如何在列表中查找属性具有特定值或存在具有该值的相关项目的所有项目?

转载 作者:太空宇宙 更新时间:2023-11-03 21:28:19 25 4
gpt4 key购买 nike

如何获取(或过滤)具有相同 userID 和 artistID 的记录的列表

这是我的评分对象

public class Rating
{
public int userID { get; set; }
public int artistID { get; set; }
public int rating { get; set; }
}

这是我的数据

Rating rate1 = new Rating { artistID = 1, userID = 101, rating = 2 };
Rating rate2 = new Rating { artistID = 1, userID = 102, rating = 4 };
Rating rate3 = new Rating { artistID = 2, userID = 101, rating = 3 };
Rating rate4 = new Rating { artistID = 2, userID = 102, rating = 5 };
Rating rate5 = new Rating { artistID = 3, userID = 102, rating = 1 };

List<Rating> ratings = new List<Rating>(2);
ratings.Add(rate1);
ratings.Add(rate2);
ratings.Add(rate3);
ratings.Add(rate4);
ratings.Add(rate5);

如果有ara记录输出:其中 userID = 101,并且其中(用户 ID 为 101 的艺术家 ID)

我想要的输出示例:

artistID    userID      rating
1 101 2
1 102 4
2 101 3
2 102 5

我还想要 1, 102, 4 因为这个 artistID 有另一个评级,用户 ID 是 101。这同样适用于 2, 102, 5

更新如果您想包括所有记录,其中有另一条记录具有不同的用户但同一艺术家(来自@Tim Schmelter 的引述)。您可以在更新 版本中找到@Tim Schmelter 的答案。

例如,如果您将 rate5 更改为 Rating rate5 = new Rating { artistID = 3, userID = 101, rating = 1 }; 并添加新对象 rate6 Rating rate6 = new评分 { artistID = 3, userID = 102, rating = 1 };

它会产生结果:

artistID    userID      rating
1 101 2
1 102 4
2 101 3
2 102 5
3 101 1
3 102 1

因为 userID-101 评分的 artistID 也被 userid-102 评分您可以在@Tim Schmelter 的回答中找到答案。

最佳答案

因此,您想要所有 userID 为 101 或具有相同 artistIDuserID = 101 的评级?您可以在 Where 中使用 Any:

var query = ratings.Where(r =>  r.userID  == 101 || 
ratings.Any(rr => rr.userID == 101 && r.artistID == rr.artistID));

这类似于sql中的相关子查询。

测试:

foreach (Rating r in query)
Console.WriteLine("artistID = {0}, userID = {1}, rating = {2}"
, r.artistID, r.userID, r.rating);

结果:

artistID = 1, userID = 101, rating = 2
artistID = 1, userID = 102, rating = 4
artistID = 2, userID = 101, rating = 3
artistID = 2, userID = 102, rating = 5

更新 “我想要所有包含不同用户但同一艺术家的另一条记录的记录”

现在很明显,您想要这个:

var query = ratings
.Where(r => ratings
.Any(rr => r.artistID == rr.artistID && rr.userID != r.userID));

关于c# - 如何在列表中查找属性具有特定值或存在具有该值的相关项目的所有项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25643131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com