将var初始化为null

时间:2011-05-24 14:22:26

标签: c# linq

我已经看到如何初始化var to null.这对我的情况没有帮助。我有

string nuller = null;
var firstModel = nuller;
if(contextSelectResult.Count() > 0)
    firstModel = contextSelectResult.First();

我收到错误

  

无法隐式转换类型   'SomeNamespace.Model.tableName'到'string'。

我试图避免尝试/捕获InvalidOperation First(),因为它的价格昂贵。那么,我怎样才能解决范围问题?

7 个答案:

答案 0 :(得分:22)

你可以试试这个:

var firstModel=(dynamic) null; 

答案 1 :(得分:7)

您可以改为使用FirstOrDefault()

firstModel = contextSelectResult.FirstOrDefault();

if(firstModel != null)
{
   ...
}

答案 2 :(得分:6)

只需使用FirstOrDefault()代替。 FirstOrDefault的重点是返回序列的第一个元素(如果存在),或者返回元素类型的默认值(即所有引用类型为null)。

请注意,在您希望检查是否存在任何元素的其他情况下,使用Any()有时可能比Count() > 0更有效 - 它取决于确切的上下文,但IMO更简单无论如何,表达你正在寻找的东西。

答案 3 :(得分:2)

请尝试使用FirstOrDefault。如果没有项目,则默认返回null

答案 4 :(得分:1)

如果没有 First ,那么引用类型将为null:

var firstModel = contextSelectResult.FirstOrDefault();

答案 5 :(得分:1)

请尝试此选项:

var var_name = (dynamic)null; 

var var_name = (Type*)null;

类型*:例如 - > string,var,int

答案 6 :(得分:0)

您也可以使用此案例的通用

public static dynamic GetTheListOfDevicesDependOnDB(int projectID)
{
    List<Devices_Settings> ListDevices_Settings = new List<Devices_Settings>();
    var db = new First_DataContext();
    var devices = (dynamic) null;
    switch (projectID)
    {
        case (int)enmProjectType.First:
            db = new First_DataContext();
            devices = db.Device_Fisrt.ToList();   
            break;
        case (int)enmProjectType.Second:
             var db1 = new Second_DataContext();
             devices = db1.Device_Second.ToList();
            break;

        default:
            break;
    }

    foreach (var item in devices)
    {
       //TODO
    }

    return ListDevices_Settings;

}