我正在尝试进行涉及var的演员表。我已经初始化了我的变量:
var updateContent = (MyType)null;
if (correctTime)
{
var getDataFromDatabase = from d in db.Content where d.someId == id select d;
//Here's where my I need to do some type of cast.
updateContent = getDataFromDatabase
}
我是否可以使用正确的强制转换来在updateContent中存储getDataFromDatabase?
更新:
抱歉我的问题不清楚。根据您的所有评论,我能够完成以下任务:
IEnumerable<MtType> updateContent = null;
if (correctTime==true)
{
IEnumerable<MtType> getDataFromDatabase = var getDataFromDatabase = from d in db.Content where d.someId == id select d;
updateContent = getDataFromDatabase;
}
我的最终目标是能够从if块内部访问返回,这就行了。再次感谢您的帮助。
答案 0 :(得分:3)
您查询的结果将是IEnumerable<Content>
。如果您要将查询中的结果加载到MyType
,那么您需要执行以下投影:
var getDataFromDatabase = from d in db.Content where d.someId == id
select new MyType { Prop1 = d.Prop1, Prop2 = d.Prop2 };
这会在IQueryable<MyType>
IEnumerable<MyType>
,而getDataFromDatabase
会继承MyType
如果您只想从查询结果中获取第一个updateContent = getDataFromDatabase.FirstOrDefault();
,那么您可以这样做:
{{1}}
答案 1 :(得分:1)
关键字var
只是具体类型的便捷缩写。 不类似于动态类型。正如之前很多评论家所说,以下两行是相同的
var myVar1 = (MyType)null;
MyType myVar2 = (MyType)null;
唯一的区别是可以在第二行中省略类型转换。所以,也提到了这一点,你试图将IEnumerable<OfSomeType>
分配给MyType
的变量,而这个变量根本没有,也永远不会有效。
Resharper的重构选项允许您在隐式(var
)和显式(MyType
)声明之间切换。
答案 2 :(得分:1)
我认为在您发布的内容的代码中,检查updateContent
是否为null
。
这似乎是conditional operator:
的一个非常好的应用var updateContent = correctTime
? (from d in db.Content where d.someId == id select d)
: null;