Ответ 1
Попробуйте ввести код:
foreach(var x in Lists.Where(x => x.fiels != null))
{
}
У меня есть список X с некоторой строкой и нулевым значением. Я повторяю цикл foreach, чтобы связать значение с текстовым полем. Если я получу нулевые значения в моем списке X, цикл foreach завершится и получит нулевое исключение, как его обрабатывать.
Я проверяю условие внутри каждого цикла. но я не уверен, что это неправильно.
SPList _listObj = web.Lists[new Guid(listID)];
SPListItem item = _listObj.GetItemById(Convert.ToInt32(itemID));
foreach (SPField field in _listObj.Fields)
{
if (field.Title != Null)
{ //do some code}}
Попробуйте ввести код:
foreach(var x in Lists.Where(x => x.fiels != null))
{
}
Этот код выглядит довольно подозрительным для меня.
Во-первых, у вас действительно есть список списков? Если это так, я бы предположил, что вам нужно также перебирать каждый элемент во внутреннем списке:
foreach(List list in Lists)
{
foreach (var x in list)
{
if (x.fields != null)
// blah
else
// blah
}
}
Во-вторых, вы уверены, что переменная Lists
не содержит нулей? Возможно, это фактически x
, которое является нулевым, и что причина вашего Null Reference Exception:
foreach(List x in Lists)
{
if (x != null && x.fields != null)
// blah
else
// blah
}
Предоставленный код неверен. Я предполагаю, что вы хотите проверить X для Null в цикле foreach. Если это логически правильно или нет, вместо этого вы можете только знать, что логика выходит за рамки предоставленного кода и зависит от того, где вы на самом деле его используете.
Я лично не вижу ничего плохого, чтобы проверять нули в цикле foreach.
Вы также, например, можете использовать Linq для запроса сначала для значений Null и после значений Non Null. Вопрос выбора дизайна.
С уважением.
Список x в списках? Вы, вероятно, хотите сделать:
foreach(string x in listvar){
if(x != null)
// do something
}
И действительно ли строки являются нулевыми или просто пустыми? Это разница.
foreach(string x in listvar){
if(x != "")
// do something
}
Я подозреваю, что проблема заключается в неправильной реализации цикла foreach, который вызывает посылку нулевых ошибок, поскольку объекты внутри цикла не существуют.
Почему бы вам не использовать его так же, как оператор с нулевым коалесцированием
foreach (var item in feeList ?? new List<FeeBusiness>())
{
// your code
}
оператор называется нуль-коалесцирующим оператором. Он возвращает левый операнд, если операнд не равен нулю; в противном случае он возвращает правый операнд.
string delimitedvalues = null;//"11,22,33";
foreach(var str in (delimitedvalues?? string.Empty).split(','))
{
string testvalue = "Test Value" + str;
}
Надеюсь, что эта конструкция полезна!