如何将列表过滤到2个单独的列表中

时间:2015-12-15 14:06:35

标签: c# list filter

我将用户活动目录组拉入列表。列表中有几个组,其中一些列为

电路板测试& 董事会测试管理员

我将列表过滤成一个新列表,其中只包含以“Board”开头的所有内容,所以现在我的列表只包含上面的两行。

但是现在我需要2个单独的列表。因此,从最初的长组列表中,我需要创建一个仅包含“Board Testing”行的列表。另一个列表只包含“Board Testing Admin”。

我原来做的事现在不起作用。

$('.Message .CodeBlock', this).wrap('<div class=surroundpre></div>');
    $('.surroundpre').prepend('$Uniquepreid');

3 个答案:

答案 0 :(得分:2)

我说你几乎就在那里,只是检查名称Contains()'Board Testing Admin'是否:

List<string> GroupNames = new List<string>();
GroupNames.AddRange(ADConnect.ADConnect.GetGroups(adusername));
var group1 = GroupNames.Where(g => g.Contains("Board Testing Admin"));
var group2 = GroupNames.Where(g => !g.Contains("Board Testing Admin"));

答案 1 :(得分:0)

List<string> GroupNames = new List<string>();
GroupNames.AddRange(ADConnect.ADConnect.GetGroups(adusername));
List<string> FilteredBoardTestingGroup = new List<string>();
List<string> FilteredBoardAdminGroup = new List<string>();

var FilteredName = new String[] { "Board Testing" };
var names = GroupNames.Where(t => FilteredName.Any(c => t.Contains(c)));
FilteredBoardTestingGroup.AddRange(names);

FilteredName = new String[] { "Board Testing Admin" };
names = GroupNames.Where(t => FilteredName.Any(c => t.Contains(c)));
FilteredBoardAdminGroup.AddRange(names);

cmbgroup1.DataSource = FilteredBoardTestingGroup;
cmbgroup2.DataSource = FilteredBoardAdminGroup;

答案 2 :(得分:0)

尝试此扩展方法...

public static class ListExtensions
{
    public static List<List<T>> split<T>(this List<T> source, int sizeOfList) 
    {
        return source
            .Select((x, i) => new { Index = i, Value = x })
            .GroupBy(x => x.Index / sizeOfList)
            .Select(x => x.Select(v => v.Value).ToList())
            .ToList();
    }
}

<强>实施

List<string> test = new List<string> { "A", "B", "C" };
List<List<string>> temp = test.split(test.Count);