请问怎么用C#写一个“找搭子”的功能?比如我想根据用户输入的兴趣标签(如“打羽毛球”、“周末爬山”),从列表里匹配到有相同兴趣的人,并输出匹配结果。
下面是一个简单的C#控制台示例,演示如何根据兴趣标签匹配“搭子”:
```csharp
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
classProgram
{
staticvoidMain()
{
//1.准备一些用户及其兴趣
varusers=newList
//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;}
publicList
publicUser(stringname,List
运行示例:
``` 请输入你的兴趣标签(用逗号分隔,例如:打羽毛球,周末爬山): 打羽毛球,看电影
找到以下搭子: -小明,共同兴趣:打羽毛球、看电影 -小红,共同兴趣:打羽毛球 -小刚,共同兴趣:打羽毛球 ```
这个示例的核心思路是:
-用`List