我已经看到如何初始化var to null.这对我的情况没有帮助。我有
string nuller = null;
var firstModel = nuller;
if(contextSelectResult.Count() > 0)
firstModel = contextSelectResult.First();
我收到错误
无法隐式转换类型 'SomeNamespace.Model.tableName'到'string'。
我试图避免尝试/捕获InvalidOperation
First()
,因为它的价格昂贵。那么,我怎样才能解决范围问题?
答案 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;
}