Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检查一个项目是否存在于多个列表框中?ASP.NET/C_C#_Javascript_Asp.net - Fatal编程技术网

C# 如何检查一个项目是否存在于多个列表框中?ASP.NET/C

C# 如何检查一个项目是否存在于多个列表框中?ASP.NET/C,c#,javascript,asp.net,C#,Javascript,Asp.net,我有三组列表框,我将项目从lb1移动到lb2,从lb3移动到lb4,从lb5移动到lb6。左侧的列表框包含相同的项目,如果左侧列表框中的一个或多个项目添加到右侧的多个列表框中,我不希望用户能够提交页面。例如,lb1、lb3和lb5中的项目A只能保存在lb2、lb4或lb6中,而不能保存在其中的两个或三个中 我希望在提交页面之前执行此检查,稍后我将使用javascript添加验证,我想知道最有效的方法是什么 将所有项目添加到列表中,并检查是否有重复项 提前谢谢 编辑: 大概是这样的:

我有三组列表框,我将项目从lb1移动到lb2,从lb3移动到lb4,从lb5移动到lb6。左侧的列表框包含相同的项目,如果左侧列表框中的一个或多个项目添加到右侧的多个列表框中,我不希望用户能够提交页面。例如,lb1、lb3和lb5中的项目A只能保存在lb2、lb4或lb6中,而不能保存在其中的两个或三个中

我希望在提交页面之前执行此检查,稍后我将使用javascript添加验证,我想知道最有效的方法是什么

将所有项目添加到列表中,并检查是否有重复项

提前谢谢

编辑: 大概是这样的:

            List<string> groupList = new List<string>();
            foreach (ListItem item in lbFullAccess.Items)
            {
                groupList.Add(item.Value.ToString());
            }
            foreach (ListItem item in lbContributor.Items)
            {
                groupList.Add(item.Value.ToString());
            }
            foreach (ListItem item in lblReadOnly.Items)
            {
                groupList.Add(item.Value.ToString());
            }

嗯,你可以用一百种不同的方法来做。你的迭代建议绝对没有错

你可以和LINQ玩得开心一点:

public bool AreAllValuesUnique()
{
    // Build up a linq expression of all of the ListItems
    // by concatenating each sequence
    var allItems = lbFullAccess.Items.Cast<ListItem>()
        .Concat(lbContributor.Items.Cast<ListItem>())
        .Concat(lbReadOnly.Items.Cast<ListItem>());

    // Group the previous linq expression by value (so they will be in groups of "A", "B", etc)
    var groupedByValue = allItems.GroupBy(i => i.Value);

    // Finally, return that all groups must have a count of only one element
    // So each value can only appear once
    return groupedByValue.All(g => g.Count() == 1);
}

不太确定调用Cast将ListItemCollection的每个元素转换为ListItem的性能,从而在每个集合上生成IEnumerable,但这可能可以忽略不计。

为什么不遍历ListBox并选中它呢?提交时对每个列表框使用DISTINCT如何?