Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C列表匹配和替换值_C#_List_Match_Recursive Query_Enumerable - Fatal编程技术网

C# C列表匹配和替换值

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

我将尽可能简单地解释这一点,这是一个非常具体的问题。我已经使用F一段时间了,这可能会让我感到困惑。我试图做的基本上是或者接近于一个典型的递归匹配语句,但我是在C中做的

我有一个列表字符串s1,字符串s2,我称之为列表1。这包括标签和真值

例如: 伟大事业,1; 超敏2例; 增强针对性,3 敏感度较高,4

然后我有另一个列表,我将调用列表2。这是部分字符串的列表。例如:

原因;更大的;超;相关性

我想匹配list1字符串s1、字符串s2,并替换List2字符串,或者用s2值生成一个新列表,其中s1.containsList2

因此,使用与上述相同的示例,我的最终目标将是一个包含以下值的列表: 1.4.2.三,

编辑: 我假设在某些方面,这有点像使用我的列表1作为查找表,如果这是SQL查询,我希望获得实际值而不是查找代码在这种情况下,字符串是查找代码,数字是真值

您可以使用LINQ和Where,并选择如下所示:

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;
           }

“太好了,正是我想要的。谢谢你。”安托尼德很乐意帮忙!