C# 如果重复选择,则下拉选择索引设置为0
我有一个linq查询,它检查所有6个下拉列表是否有任何重复选择 为此,目前我将所有下拉列表的SelectedIndex设置为0。与此相反,我需要这两个下拉列表。SelectedIndex=0具有相同的SelectedValueC# 如果重复选择,则下拉选择索引设置为0,c#,asp.net,linq,C#,Asp.net,Linq,我有一个linq查询,它检查所有6个下拉列表是否有任何重复选择 为此,目前我将所有下拉列表的SelectedIndex设置为0。与此相反,我需要这两个下拉列表。SelectedIndex=0具有相同的SelectedValue var allIndexes = new List<int> { drpdwnlst_Seq1.SelectedIndex, drpdwnlst_Seq2.Sele
var allIndexes = new List<int>
{
drpdwnlst_Seq1.SelectedIndex,
drpdwnlst_Seq2.SelectedIndex,
drpdwnlst_Seq3.SelectedIndex,
drpdwnlst_Seq4.SelectedIndex,
drpdwnlst_Seq5.SelectedIndex,
drpdwnlst_Seq6.SelectedIndex
};
var noSelectedIndexIsTheSame = allIndexes.Where(x => x != 0)
.GroupBy(x => x)
.All(x => x.Count() == 1);
if (!noSelectedIndexIsTheSame)
{
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "AdminUserError", "alert('Selection Rrepeated.'); ", true);
drpdwnlst_Seq1.SelectedIndex = 0;
drpdwnlst_Seq2.SelectedIndex = 0;
drpdwnlst_Seq3.SelectedIndex = 0;
drpdwnlst_Seq4.SelectedIndex = 0;
drpdwnlst_Seq5.SelectedIndex = 0;
drpdwnlst_Seq6.SelectedIndex = 0;
}
var allIndexes=新列表
{
drpdwnlst_Seq1.选择索引,
drpdwnlst_Seq2.选择的索引,
drpdwnlst_seq 3.选择的索引,
drpdwnlst_seq 4.选择的索引,
drpdwnlst_seq 5.选择的索引,
drpdwnlst_seq 6.SelectedIndex
};
var noselectedIndexistheName=allIndexes.Where(x=>x!=0)
.GroupBy(x=>x)
.All(x=>x.Count()==1);
如果(!noselectedIndexistheName)
{
ScriptManager.RegisterStartupScript(Page,Page.GetType(),“AdminUserError”,“警报('选择重复');”,true);
drpdwnlst_Seq1.SelectedIndex=0;
drpdwnlst_Seq2.SelectedIndex=0;
drpdwnlst_Seq3.SelectedIndex=0;
drpdwnlst_Seq4.SelectedIndex=0;
drpdwnlst_Seq5.SelectedIndex=0;
drpdwnlst_seq 6.SelectedIndex=0;
}
您可以将列表更改为以下定义(这样您就可以保留大部分逻辑)
List allIndexes=新列表
{
新的KeyValuePair(drpdwnlst_Seq1,drpdwnlst_Seq1.SelectedIndex),
新的KeyValuePair(drpdwnlst_Seq2,drpdwnlst_Seq2.SelectedIndex),
新的KeyValuePair(drpdwnlst_Seq3,drpdwnlst_Seq3.SelectedIndex),
新的KeyValuePair(drpdwnlst_Seq4,drpdwnlst_Seq4.SelectedIndex),
新的KeyValuePair(drpdwnlst_Seq5,drpdwnlst_Seq5.SelectedIndex),
新的KeyValuePair(drpdwnlst_seq 6,drpdwnlst_seq 6.SelectedIndex)
};
var groups=allIndexes.Where(x=>x.Value!=0).GroupBy(x=>x.Value);
布尔noselectedIndexistheName=groups.All(g=>g.Count()==1);
如果(!noselectedIndexistheName)
{
ScriptManager.RegisterStartupScript(Page,Page.GetType(),“AdminUserError”,“警报('选择重复');”,true);
foreach(组中的变量g)
{
如果(g.Count()==1)
{
继续;
}
foreach(var kvp,单位为g)
{
kvp.Key.SelectedIndex=0;
}
}
}
这样,您就有了组合框的引用+当前选定的索引,您可以按KeyValuePair.Value进行分组,如果没有相同的索引,您就有一个单独的bool检查。如果是,它将循环组,如果每个组发现超过1个,则重置这些这是正确的逻辑。我申请了,但我得到了“ComboBox找不到”的错误。我用AjaxControlToolKit引用了它,然后我得到了这个KeyValuePair(AjaxControlToolKit.ComboBox,int)具有无效参数“是的,我不知道您正在使用哪个ui控件,您在asp.net控件中使用什么,请将该类用作KeyValuePair@devenravaliadone的基类。如何转换为int?@allIndexes.Where(x=>x!=0)
List<KeyValuePair<DropDownList, int>> allIndexes = new List<KeyValuePair<DropDownList, int>>
{
new KeyValuePair<DropDownList, int>(drpdwnlst_Seq1, drpdwnlst_Seq1.SelectedIndex),
new KeyValuePair<DropDownList, int>(drpdwnlst_Seq2, drpdwnlst_Seq2.SelectedIndex),
new KeyValuePair<DropDownList, int>(drpdwnlst_Seq3, drpdwnlst_Seq3.SelectedIndex),
new KeyValuePair<DropDownList, int>(drpdwnlst_Seq4, drpdwnlst_Seq4.SelectedIndex),
new KeyValuePair<DropDownList, int>(drpdwnlst_Seq5, drpdwnlst_Seq5.SelectedIndex),
new KeyValuePair<DropDownList, int>(drpdwnlst_Seq6, drpdwnlst_Seq6.SelectedIndex)
};
var groups = allIndexes.Where(x => x.Value != 0).GroupBy(x => x.Value);
boolean noSelectedIndexIsTheSame = groups.All(g => g.Count() == 1);
if (!noSelectedIndexIsTheSame)
{
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "AdminUserError", "alert('Selection Rrepeated.'); ", true);
foreach (var g in groups)
{
if (g.Count() == 1)
{
continue;
}
foreach (var kvp in g)
{
kvp.Key.SelectedIndex = 0;
}
}
}