C# C列表匹配和替换值
我将尽可能简单地解释这一点,这是一个非常具体的问题。我已经使用F一段时间了,这可能会让我感到困惑。我试图做的基本上是或者接近于一个典型的递归匹配语句,但我是在C中做的 我有一个列表字符串s1,字符串s2,我称之为列表1。这包括标签和真值 例如: 伟大事业,1; 超敏2例; 增强针对性,3 敏感度较高,4 然后我有另一个列表,我将调用列表2。这是部分字符串的列表。例如: 原因;更大的;超;相关性 我想匹配list1字符串s1、字符串s2,并替换List2字符串,或者用s2值生成一个新列表,其中s1.containsList2 因此,使用与上述相同的示例,我的最终目标将是一个包含以下值的列表: 1.4.2.三, 编辑: 我假设在某些方面,这有点像使用我的列表1作为查找表,如果这是SQL查询,我希望获得实际值而不是查找代码在这种情况下,字符串是查找代码,数字是真值您可以使用LINQ和Where,并选择如下所示:C# C列表匹配和替换值,c#,list,match,recursive-query,enumerable,C#,List,Match,Recursive Query,Enumerable,我将尽可能简单地解释这一点,这是一个非常具体的问题。我已经使用F一段时间了,这可能会让我感到困惑。我试图做的基本上是或者接近于一个典型的递归匹配语句,但我是在C中做的 我有一个列表字符串s1,字符串s2,我称之为列表1。这包括标签和真值 例如: 伟大事业,1; 超敏2例; 增强针对性,3 敏感度较高,4 然后我有另一个列表,我将调用列表2。这是部分字符串的列表。例如: 原因;更大的;超;相关性 我想匹配list1字符串s1、字符串s2,并替换List2字符串,或者用s2值生成一个新列表,其中s1
var list1 = new List<(string, string)>
{
("great cause", "1"), ("hyper sensitive", "2"), ("increased pertinance", "3"), ("greater sensitive", "4")
};
var list2 = new List<string>{"cause", "greater", "hyper", "pertinance"}; // fixed typos from the post.
var result = list2
.Where(s => list1.Any(t => t.Item1.Contains(s)))
.Select(s => list1.First(t => t.Item1.Contains(s)).Item2)
.ToList();
Console.WriteLine(string.Join(", ", result)); // prints "1, 4, 2, 3"
我认为在你的情况下,最好的办法是使用字典来代替l1,比如:
var l2 = new string[] { "cause", "greater", "hyper", "pertinance" }.ToList();
dic.Add("great cause", "1");
dic.Add("hyper sensitive", "2");
for (int i = 0; i < l2.Count; i++)
{
l2[i] = dict1.FirstOrDefault(x => x.Key.Contains(l2[i])).Value;
}
“太好了,正是我想要的。谢谢你。”安托尼德很乐意帮忙!