私は2つの辞書を持っています。 1つはExcelシートの列のリストと定義された列のリストです。私は、定義された列がシートに存在するかどうかを知りたい。存在する場合、選択されたドロップダウンリストで選択されます。C#このコードで、このエラーメッセージが表示されないようにするにはどうすればよいですか?
行内dropdownList.SelectedValue = selectedItem.First()。Key;私は時々errormessageを得るSequenceは要素を含んでいない。私は安全性をコードしていると思った。何を忘れるのですか?
...コマンド...
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でないかどうかをチェックするとき、シーケンスはnullではなく、 'First'を呼び出すとこのエラーが発生します。 このようなものにチェックを変更するのが最善です。 var selectedItem = columnList.Where(cl => cl.Value == defColumnList [index]); if(selectedItem!= null && selectedItem.Any()) dropdownList.SelectedValue = selectedItem.First()。Key; –