我正在使用带有一些字符串和空值的列表X.我正在迭代foreach循环以将值绑定到文本框。如果我在列表X中得到任何空值,则foreach循环终止,并获得null异常,如何处理它。
我正在检查每个循环内部的条件。但我认为它不正确。
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}}
答案 0 :(得分:4)
尝试以下代码:
foreach(var x in Lists.Where(x => x.fiels != null))
{
}
答案 1 :(得分:0)
这段代码看起来很可疑。
首先,你真的有一份清单清单吗?如果是这样,我想你也必须迭代内部列表中的每个元素:
foreach(List list in Lists)
{
foreach (var x in list)
{
if (x.fields != null)
// blah
else
// blah
}
}
其次,您确定Lists
变量不包含任何空值吗?可能它实际上是x
,它是null,这是你的Null引用异常的原因:
foreach(List x in Lists)
{
if (x != null && x.fields != null)
// blah
else
// blah
}
答案 2 :(得分:0)
提供的代码不正确。我想你想在foreach循环中检查X for Null。如果这在逻辑上是正确的,那么只有您可能知道逻辑超出了所提供的代码,并取决于您实际使用它的位置。
我个人认为在foreach循环中检查空值没有什么不好。
例如,您也可以使用Linq首先查询Null值和非Null值。设计选择的问题。
问候。
答案 3 :(得分:0)
在列表中列出x?你可能意思是这样做:
foreach(string x in listvar){
if(x != null)
// do something
}
字符串实际上是空的还是空的?这是一个区别。
foreach(string x in listvar){
if(x != "")
// do something
}
我怀疑问题在于你的foreach循环的错误实现导致弹出null错误,因为循环内的对象不存在。
答案 4 :(得分:0)
为什么不使用null-coalescing operator
来使用它 foreach (var item in feeList ?? new List<FeeBusiness>())
{
// your code
}
?? operator被称为null-coalescing运算符。如果操作数不为null,则返回左侧操作数;否则它会返回右手操作数。
答案 5 :(得分:0)
string delimitedvalues = null;//"11,22,33";
foreach(var str in (delimitedvalues?? string.Empty).split(','))
{
string testvalue = "Test Value" + str;
}
希望上面的结构很有用!
答案 6 :(得分:0)
在迭代其字段之前,必须确保所获取的对象不会以null(您的列表_listObj
)的形式返回。即使您确定要传递的GUID与要获取的列表相匹配,也应该检查该对象是否为null,并检查字段数,如果获得要传递的ID的项,在:
SPList _listObj = web.Lists[new Guid(listID)];
if (_listObj != null) // do we have a list object?
{
if (_listObj.Fields.Count > 0) // do we have list columns on the list?
{
SPListItem item = _listObj.GetItemById(Convert.ToInt32(itemID));
if (item != null) // did our item ID get a hit?
{
foreach (SPField field in _listObj.Fields)
{
if (field.Title != null) // need lower case null, here
{
//do some code
}
}
}
}
}