Linq 比较两个逗号分隔的字符串并获取相交值的计数
比较两个逗号分隔字符串并检索相交值的最佳代码是什么?例如,假设我有字符串“a,b,c”和目标字符串“x,b,y”,我需要的结果是出现1次 正如建议的那样,一种方法是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(',')
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);
这正是我想要的。工作很有魅力。谢谢