C# 使用c将用户与角色匹配#

C# 使用c将用户与角色匹配#,c#,csv,C#,Csv,我对此有点小问题 我有一个csv文件,第一列是用户,第二列是用户权限 以下是该文件的示例: USER, ENTITLEMENTS ACC_EXTRACT, SBL/All Ins Apps ACC_EXTRACT, SBL/PRC ACC_RECON, SBL/AccountingAdmin ACC_RECON, SBL/All Ins Apps 我想做的是检查哪些用户有特定的 我可以分配角色的权利。 例如,用户ACC_EXTRACT有两个权限:SBL/A

我对此有点小问题

我有一个csv文件,第一列是用户,第二列是用户权限

以下是该文件的示例:

 USER,           ENTITLEMENTS
 ACC_EXTRACT,   SBL/All Ins Apps
 ACC_EXTRACT,   SBL/PRC
 ACC_RECON, SBL/AccountingAdmin
 ACC_RECON, SBL/All Ins Apps
我想做的是检查哪些用户有特定的 我可以分配角色的权利。 例如,用户ACC_EXTRACT有两个权限:SBL/All-Ins-Apps和SBL/PRC 我想给他分配角色x。我如何阅读文件并检查哪一个 实体分配给哪个用户

这是我到目前为止的代码,但我不确定它是否有效或是否有效

    while ((line = sr.ReadLine()) != null)
        {
            users = sr.ReadLine();
            string[] split = users.Split(',');

            if (split[1].Contains("SBL/FO/Rpt") | split[1].Contains("SBL/Live Ins                Apps") | split[1].Contains("SBL/Port_Grp") | split[1].Contains("SBL/Prices") | split[1].Contains("SBL/SalesPerson"))
            {
                Console.WriteLine(split[1] + " " + split[0]);
                sw.WriteLine(split[0] + " , " + "Front Office - SalesPerson");
                sw.Flush();
        }
       }

首先,您的代码至少包含两个错误:

您可以在一个循环中阅读该行两次
使用按位OR(|)运算符而不是逻辑运算符(| |)

我还将向string类添加一个扩展方法,如下所示:

   public static bool ContainsAny(this string s, params string[] values)
   {
        return values.Any(x => x.Equals(s));
   }
以这种方式简化if测试

    if (split[1].ContainsAny("SBL/FO/Rpt", "SBL/Live Ins Apps","SBL/Port_Grp",
                             "SBL/Prices","SBL/SalesPerson"))
    {
        .....
    }
    if (split[1].ContainsAny("SBL/FO/Rpt", "SBL/Live Ins Apps","SBL/Port_Grp",
                             "SBL/Prices","SBL/SalesPerson"))
    {
        .....
    }