我有兩本詞典。一個帶有Excel工作表中列的列表和已定義列的列表。我想知道表單中是否存在已定義的列。如果他們存在,那麼他們將在選定的下拉列表中進行選擇。C#如何防止在此代碼中發生此錯誤消息:序列不包含任何元素?
在行dropdownList.SelectedValue = selectedItem.First()。Key;我有時會得到一個errormessage序列不包含任何元素。我認爲我編碼安全。我忘了什麼?
...命令
SetDataSource(import.ColumnList, import.DefColumnList, ddlSomeColumn, SomeEnum.Zipcode);
...然後調用方法...
private void SetDataSource(Dictionary<int, string> columnList, Dictionary<int, string> defColumnList, DropDownList dropdownList, SomeEnum item)
{
int index = (int)item;
dropdownList.BeginUpdate();
dropdownList.ValueMember = "Key";
dropdownList.DisplayMember = "Value";
dropdownList.DataSource = columnList;
if (defColumnList.ContainsKey(index) && defColumnList[index].Length > 0)
{
var selectedItem = columnList.Where(cl => cl.Value == defColumnList[index]);
if (selectedItem != null)
dropdownList.SelectedValue = selectedItem.First().Key;
}
dropdownList.EndUpdate();
}
selectedItem.First()將在selectedItem爲空時發出該錯誤。 – Mixxiphoid
當columnList.Where(cl => cl.Value == defColumnList [index])產生一個空序列,然後調用First()時,就會發生這種情況。 – spender
'SelectedItem'將產生一系列項目。當你檢查它是否爲null時,序列isnt null並調用'First'將導致這個錯誤。 它最好把你的支票改成這樣的東西 var selectedItem = columnList.Where(cl => cl.Value == defColumnList [index]); if(selectedItem!= null && selectedItem.Any()) dropdownList.SelectedValue = selectedItem.First()。Key; –