gpt4 book ai didi

c# - 找到最具体的匹配项目

转载 作者:行者123 更新时间:2023-11-30 16:01:26 25 4
gpt4 key购买 nike

用户输入将像'BY1 2PX',它将拆分并存储到如下列表中

var items = new List<string> {'BY1 2PX', 'BY12', 'BY1', 'BY'};

我有产品来源列表

public class Product
{
public string Name {get;set;}
public string Id {get;set;}
}

下面是示例产品列表。没有顺序保证,可以是任何顺序。

var products = new List<Product>{ 
new Product("1", "BY1 2PX"),
new Product("2", "BY12"),
new Product("3", "BY1"),
new Product("4", "BY"),
new Product("5", "AA2 B2X"),
//...etc
}

我的输出应该获取 1,因为它是最具体的匹配项。如果 Id = 1 不存在,那么它应该像那样获取 Id =2 ......等等 谁能帮我写一个 linq 查询。我试过类似下面的方法,这样可以吗?

var result =  items.Select(x => products.FirstOrDefault(p =>
string.Equals(p.Name.Trim(), x, StringComparison.OrdinalIgnoreCase)))
.FirstOrDefault();

最佳答案

好吧,您可以使用具有快速查找功能的字典:

var productsDict = products.ToDictionary(p => p.Name, p => p);

var key = items.FirstOrDefault(i => productsDict.ContainsKey(i));

Product result = key != null ? productsDict[key] : null;

或者如 Tim 所建议的,如果您有多个同名元素,您可以使用 Lookup :

var productsDict = products.ToLookup(p => p.Name, p => p);

var key = items.FirstOrDefault(i => productsDict.Contains(i));

Product result = key != null ? productsDict[key] : null;

关于c# - 找到最具体的匹配项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38745851/

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