Linq 比较两个逗号分隔的字符串并获取相交值的计数

Linq 比较两个逗号分隔的字符串并获取相交值的计数,linq,string-comparison,Linq,String Comparison,比较两个逗号分隔字符串并检索相交值的最佳代码是什么?例如,假设我有字符串“a,b,c”和目标字符串“x,b,y”,我需要的结果是出现1次 正如建议的那样,一种方法是 public static bool UserCanAccessThisPage(string userAccessGroups, string pageItemAccessGroups) { return userAccessGroups.Split(',')

比较两个逗号分隔字符串并检索相交值的最佳代码是什么?例如,假设我有字符串“a,b,c”和目标字符串“x,b,y”,我需要的结果是出现1次

正如建议的那样,一种方法是

public static bool UserCanAccessThisPage(string userAccessGroups,
    string pageItemAccessGroups)
{
    return userAccessGroups.Split(',')
                           .Select(s => s.Trim())
                           .Contains(pageItemAccessGroups);
}
但这只会检查匹配,但我也需要匹配。请使用任何建议获得两个序列的交点:

var occurrences = 
    userAccessGroups.Split(',').Select(s => s.Trim())
         .Intersect(pageItemAccessGroups.Split(',').Select(s => s.Trim()));
检查是否存在以下事件:

bool exist = occurrences.Any();
正在获取事件计数:

int count = occurrences.Count();

要使代码更具可读性,可以将组存储在局部变量中:

 // this can be ordinal named method
 Func<string, IEnumerable<string>> parse = 
     csv => csv.Split(',').Select(s => s.Trim());

 var userGroups = parse(userAccessGroups);
 var pateItemGroups = parse(pageItemAccessGroups);
 var occurrences = userGroups.Intersect(pageItemGroups);
//这可以是顺序命名的方法
Func parse=
csv=>csv.Split(',')。选择(s=>s.Trim());
var userGroups=parse(userAccessGroups);
var pateItemGroups=parse(pageItemAccessGroups);
var引用=userGroups.Intersect(pageItemGroups);

这正是我想要的。工作很有魅力。谢谢