gpt4 book ai didi

c# - 在列表 C# 中查找最佳匹配实例的最佳实践

转载 作者:行者123 更新时间:2023-11-30 12:20:07 26 4
gpt4 key购买 nike

对于你们大多数人来说,这当然是一个非常简单的问题。但我目前正在努力寻找解决方案。

假设您有一个猫列表 (List),其中每只猫都有一个婴儿列表 (Kitten)

public class Cat
{
public string Name { get; set; }
public int Age { get; set; }
public string Race { get; set; }
public bool Gender { get; set; }
public List<Kitten> Babys { get; set; }
}

public class Kitten
{
public string Name { get; set; }
public double Age { get; set; }
public bool Gender { get; set; }
}

现在我想找到最符合给定要求的猫。一只猫很可能只满足 3 个要求中的 2 个。我只是想找到最符合我要求的猫。

我的要求可能在哪里:

  • 名字必须是“Micky”
  • 42岁
  • 有一只名叫“Mini”的小猫

我的实际解决方案是比较所有属性并选择具有最多匹配属性的属性。但这不是通用的,我相信有很多更好的方法来做到这一点。

提前致谢

最佳答案

好吧,我没有机会测试这个解决方案,但你可以试试这个:

假设您有一个猫列表:

var cats = new List<Cat>();

现在您已经定义了您的标准:

var desiredName = "Micky";
var desiredAge = 42;
var desiredKitten = "Mini";

然后你必须得到你想要的猫:

var desiredCat = cats
.Select(c => new {
Rating =
Convert.ToInt32(c.Age == desiredAge) + // Here you check first criteria
Convert.ToInt32(c.Name == desiredName) + // Check second
Convert.ToInt32(c.Babys.Count(b => b.Name == desiredKitten) > 0), // And the third one
c })
.OrderByDescending(obj => obj.Rating) // Here you order them by number of matching criteria
.Select(obj => obj.c) // Then you select only cats from your custom object
.First(); // And get the first of them

请检查这是否适合您。如果您需要更具体的答案或一些编辑,我可以添加。

关于c# - 在列表 C# 中查找最佳匹配实例的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53284776/

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