它们应该是相同的类型(这就是编译器抱怨的原因)。
var 是一个语法糖表达式,所以不要写这样的东西:
ObservableCollection<SomeLongTypeHere> myCollection = new
ObservableCollection<SomeLongTypeHere> ();
你可以写
var myCollection = new
ObservableCollection<SomeLongTypeHere> ();
编译器会知道它var
代表ObservableCollection<SomeLongTypeHere>
您尝试做的就是这样做:
var someVar = (condition) ? (int) 5 : (string) "some string";
编译器无法设置类型(它是 int 吗?它是字符串吗?),因此会抱怨。
编辑:
好的,首先,我很抱歉,但是你的变量名 s**ks ...
作为一般规则,你希望你的变量有意义,特别是如果你要求人们阅读它们并帮助你解决你的问题(注意,你的问题,而不是他们的问题)......
所以,不要使用类似的东西:
var query = (from a in lst ...
使用有意义且有意义的变量名,例如:
var query = (from employee in employee_list ...
现在,lst
同样糟糕......有一个employees_list
or departments_list
(或者如果你必须:empLst
or dptLst
,但我强烈建议使用有意义的长名称。你会花更多的时间阅读它而不是写它......相信我) .
话虽如此,您lst
基本上是所有员工 ID 与我假设的变量相同的条目。
您可以使用 2 个列表,然后根据您的条件使用正确的列表,或者更好的是,使用 if/else 分叉条件并获取数据。
您不会将实体混合到 var 中,因为您不能真正以这种方式使用它们。您的 GUI 将取决于这些对象的属性,因此动态尝试将员工或部门列表放入一般 ( var
) 中以处理它们是没有意义的。
没有更多细节,我无法提供更多帮助,但我的第一部分回答了你发布的问题:你不能那样做(如果可以,你真的不应该这样做,因为这将是一个黑客充其量只是在路上造成悲伤)