C# asp.net中的条件绑定dropdownlist

C# asp.net中的条件绑定dropdownlist,c#,asp.net,arrays,list,asp.net-2.0,C#,Asp.net,Arrays,List,Asp.net 2.0,我有一个特殊格式的字符串 string LogInIDs = 124,345, 876 | 765,322, 98 | 565,99 字符串中的所有数字都是唯一的登录ID。使用管道符号,对ID进行分组。现在,假设LogInID是345,那么我需要绑定下拉列表中组中的其他数字(在本例中为124&876)。下面的函数是我用来检索其他数字的函数 有谁能想出更好的主意或建议吗 public static List<string> RetrieveAffCodes(string LogInI

我有一个特殊格式的字符串

string LogInIDs = 124,345, 876 | 765,322, 98 | 565,99
字符串中的所有数字都是唯一的登录ID。使用管道符号,对ID进行分组。现在,假设LogInID345,那么我需要绑定下拉列表中组中的其他数字(在本例中为124&876)。下面的函数是我用来检索其他数字的函数

有谁能想出更好的主意或建议吗

public static List<string> RetrieveAffCodes(string LogInIDs , string LogInID)
{
    List<string> _finale = new List<string>();

    string[] sep1 = new string[1];
    sep1[0] = "|";

    int count = LogInIDs.Count(x => x == '|');
    string[] groups = new string[count + 1];
    groups = LogInIDs.Split(sep1, StringSplitOptions.RemoveEmptyEntries);

    foreach (string g in groups)
    {
        string p = g;
        string[] sep2 = new string[1];
        sep2[0] = ",";
        int counter = p.Count(x => x == ',');
        string[] final_list = new string[counter + 1];
        final_list = p.Split(sep2, StringSplitOptions.RemoveEmptyEntries);

        foreach (string _f in final_list)
        {
            if (_f.Trim() == LogInID)
            {
          _finale =  AddLogInIDs(final_list, final_list.Count());
            }
        }
    }
    return _finale;
}

private static List<string> AddLogInIDs(string[] final_list, int p)
{
    List<string> _finale = new List<string>();
    foreach (var item in final_list)
    {
        _finale.Add(item.Trim());
    }
    return _finale;
}
publicstaticlist RetrieveAffCodes(stringloginids,stringloginid)
{
列表_finale=新列表();
字符串[]sep1=新字符串[1];
sep1[0]=“|”;
int count=LogInIDs.count(x=>x='|');
字符串[]组=新字符串[计数+1];
groups=LogInIDs.Split(sep1,StringSplitOptions.RemoveEmptyEntries);
foreach(组中的字符串g)
{
字符串p=g;
字符串[]sep2=新字符串[1];
sep2[0]=“,”;
int counter=p.Count(x=>x==',');
string[]final_list=新字符串[计数器+1];
最终列表=p.Split(sep2,StringSplitOptions.RemoveEmptyEntries);
foreach(最终列表中的字符串)
{
如果(_f.Trim()==LogInID)
{
_finale=AddLogInIDs(final_list,final_list.Count());
}
}
}
返回(final);;
}
私有静态列表AddLogInIDs(字符串[]最终列表,int p)
{
列表_finale=新列表();
foreach(最终清单中的var项目)
{
_finale.Add(item.Trim());
}
返回(final);;
}
任何建议都会被采纳

谢谢你的时间和耐心

注意:字符串将扩展到200组

试试这个

    public static List<string> RetrieveAffCodes(string logInIDs, string logInID)
    {
        return logInIDs
        .Split("|".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
        .Where(a => a.Split(',').Any(c => c.Trim().Equals(logInID)))
        .Select(a => a.Split(',').ToList()).FirstOrDefault();
    }
publicstaticlist RetrieveAffCodes(stringloginids,stringloginid)
{
返回登录
.Split(“|”。.tocharray(),StringSplitOptions.RemoveEmptyEntries)
。其中(a=>a.Split(',')。任意(c=>c.Trim().Equals(logInID)))
.Select(a=>a.Split(',).ToList()).FirstOrDefault();
}
试试这个

    public static List<string> RetrieveAffCodes(string logInIDs, string logInID)
    {
        return logInIDs
        .Split("|".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
        .Where(a => a.Split(',').Any(c => c.Trim().Equals(logInID)))
        .Select(a => a.Split(',').ToList()).FirstOrDefault();
    }
publicstaticlist RetrieveAffCodes(stringloginids,stringloginid)
{
返回登录
.Split(“|”。.tocharray(),StringSplitOptions.RemoveEmptyEntries)
。其中(a=>a.Split(',')。任意(c=>c.Trim().Equals(logInID)))
.Select(a=>a.Split(',).ToList()).FirstOrDefault();
}

这对你有用吗

using System;
using System.Collections.Generic;           
using System.Linq;

public class Program
{
    public static void Main()
    {
        string LogInIDs = "124,345,876|765,322,98 |565,99";

        Console.WriteLine(string.Join("\n", RetrieveAffCodes(LogInIDs, "322")));
        Console.WriteLine(string.Join("\n", RetrieveAffCodes(LogInIDs, "565")));
    }

    public static IEnumerable<string> RetrieveAffCodes(string logInIDs , string logInID)
    {
        //We split the list
        var list = logInIDs.Split('|');
        //We look for an item with the logInID, if found (?) we split using ',' and then we remove the item
        var match = list
            .Select(i => i.Split(',').Select(item => item.Trim()))
            .FirstOrDefault(i => i.Contains(logInID))?
            .Where(i => i != logInID);

        if(match != null)
        {
            return match;
        }

        return new List<string>();

    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
公共课程
{
公共静态void Main()
{
字符串LogInIDs=“124345876 | 765322,98 | 565,99”;
Console.WriteLine(string.Join(“\n”,RetrieveAffCodes(LogInIDs,“322”));
Console.WriteLine(string.Join(“\n”,RetrieveAffCodes(LogInIDs,“565”));
}
公共静态IEnumerable RetrieveAffCodes(字符串logInID、字符串logInID)
{
//我们把名单一分为二
var list=logInIDs.Split(“|”);
//我们使用logInID查找一个项目,如果找到(?),我们使用“,”进行拆分,然后删除该项目
变量匹配=列表
.Select(i=>i.Split(',')。Select(item=>item.Trim())
.FirstOrDefault(i=>i.Contains(logInID))?
。其中(i=>i!=logInID);
如果(匹配!=null)
{
复赛;
}
返回新列表();
}
}

源代码:

这对你有用吗

using System;
using System.Collections.Generic;           
using System.Linq;

public class Program
{
    public static void Main()
    {
        string LogInIDs = "124,345,876|765,322,98 |565,99";

        Console.WriteLine(string.Join("\n", RetrieveAffCodes(LogInIDs, "322")));
        Console.WriteLine(string.Join("\n", RetrieveAffCodes(LogInIDs, "565")));
    }

    public static IEnumerable<string> RetrieveAffCodes(string logInIDs , string logInID)
    {
        //We split the list
        var list = logInIDs.Split('|');
        //We look for an item with the logInID, if found (?) we split using ',' and then we remove the item
        var match = list
            .Select(i => i.Split(',').Select(item => item.Trim()))
            .FirstOrDefault(i => i.Contains(logInID))?
            .Where(i => i != logInID);

        if(match != null)
        {
            return match;
        }

        return new List<string>();

    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
公共课程
{
公共静态void Main()
{
字符串LogInIDs=“124345876 | 765322,98 | 565,99”;
Console.WriteLine(string.Join(“\n”,RetrieveAffCodes(LogInIDs,“322”));
Console.WriteLine(string.Join(“\n”,RetrieveAffCodes(LogInIDs,“565”));
}
公共静态IEnumerable RetrieveAffCodes(字符串logInID、字符串logInID)
{
//我们把名单一分为二
var list=logInIDs.Split(“|”);
//我们使用logInID查找一个项目,如果找到(?),我们使用“,”进行拆分,然后删除该项目
变量匹配=列表
.Select(i=>i.Split(',')。Select(item=>item.Trim())
.FirstOrDefault(i=>i.Contains(logInID))?
。其中(i=>i!=logInID);
如果(匹配!=null)
{
复赛;
}
返回新列表();
}
}

源代码:

这是一个有效的答案吗。它是C#6,但很容易适应C#5。这是一个有效的答案吗。它是C#6,但可以很容易地适应C#5 RetrieveAfCodes(LogInIDs,“32”)和RetrieveAfCodes(LogInIDs,“322”)返回相同的结果。Good catch@LeventreveAfCodes(LogInIDs,“32”)和RetrieveAfCodes(LogInIDs,“322”)返回相同的结果。Good catch@levent