请问怎么用C#写一个“找搭子”的功能?比如我想根据用户输入的兴趣标签(如“打羽毛球”、“周末爬山”),从列表里匹配到有相同兴趣的人,并输出匹配结果。

下面是一个简单的C#控制台示例,演示如何根据兴趣标签匹配“搭子”:请问怎么用C#写一个“找搭子”的功能?比如我想根据用户输入的兴趣标签(如“打羽毛球”、“周末爬山”),从列表里匹配到有相同兴趣的人,并输出匹配结果。

```csharp usingSystem; usingSystem.Collections.Generic; usingSystem.Linq;请问怎么用C#写一个“找搭子”的功能?比如我想根据用户输入的兴趣标签(如“打羽毛球”、“周末爬山”),从列表里匹配到有相同兴趣的人,并输出匹配结果。-cs找搭子

classProgram { staticvoidMain() { //1.准备一些用户及其兴趣 varusers=newList { newUser("小明",newList{"打羽毛球","看电影","周末爬山"}), newUser("小红",newList{"打羽毛球","画画","听音乐"}), newUser("小刚",newList{"周末爬山","打篮球","打羽毛球"}), newUser("小丽",newList{"看书","做手工","看电影"}), };cs找搭子

//2.模拟用户输入自己的兴趣标签 Console.WriteLine("请输入你的兴趣标签(用逗号分隔,例如:打羽毛球,周末爬山):"); stringinput=Console.ReadLine(); varmyInterests=input.Split(',',StringSplitOptions.TrimEntries).ToList();

//3.查找搭子:找那些至少有一个兴趣与用户相同的其他用户 varmatches=users .Where(u=>u.Interests.Intersect(myInterests).Any())//有共同兴趣 .Select(u=>new { u.Name, CommonInterests=u.Interests.Intersect(myInterests).ToList() }) .ToList();

//4.输出结果 if(matches.Count==0) { Console.WriteLine("暂时没有找到搭子,换个兴趣试试吧。"); } else { Console.WriteLine("\n找到以下搭子:"); foreach(varmatchinmatches) { Console.WriteLine($"-{match.Name},共同兴趣:{string.Join("、",match.CommonInterests)}"); } } } }

//简单的用户类 publicclassUser { publicstringName{get;set;} publicListInterests{get;set;}

publicUser(stringname,Listinterests) { Name=name; Interests=interests; } } ```

运行示例:

``` 请输入你的兴趣标签(用逗号分隔,例如:打羽毛球,周末爬山): 打羽毛球,看电影

找到以下搭子: -小明,共同兴趣:打羽毛球、看电影 -小红,共同兴趣:打羽毛球 -小刚,共同兴趣:打羽毛球 ```

这个示例的核心思路是: -用`List`存储用户及其兴趣。 -用`Intersect`方法找出共同兴趣。 -用LINQ筛选出至少有一个共同兴趣的搭子并展示。