IEnumerable对象是否需要空检查?

Tan*_*nya 10 .net c# linq linq-to-objects

var selectedRows = from drow in ugTable.Rows
                         .Cast<Infragistics.Win.UltraWinGrid.UltraGridRow>()
                         .Where(drow => drow != null && drow.Selected) 
                   select drow;

if(selectedRows.Count()==1){//do something with selected rows}
Run Code Online (Sandbox Code Playgroud)

从上面的语句中,我是否需要为selectedRows变量检查Null?selectedRows是一个IEnumerable变量.

Fré*_*idi 20

你并不需要检查,如果selectedRowsnull.返回的IEnumerable<>可能是空的,但它永远不会null.

顺便说一句,我建议您通过编写以下内容来简化代码:

var selectedRows
    = ugTable.Rows.Cast<Infragistics.Win.UltraWinGrid.UltraGridRow>()
                  .Where(drow => drow != null && drow.Selected);
Run Code Online (Sandbox Code Playgroud)

哪个更短,更等效.


Ode*_*ded 6

LINQ查询将返回一个空列表(0项),如果在哪里没有匹配项.

所以,无需检查null.