我在项目中使用Linq查询,我无法修复查询之间的匿名类型错误。因为我不能为此制作一个特定的类我决定在查询中转换为相同的类型,但是我坚持这个部分无法使两个部分相等
(from x in db.table
from d in db.table2
from c in db2.table
select new {
property = (x.property == 0) ?
((d.property == null) ? 0 : d.property ) :
((c.property == null) ? 0 : c.property )}).distinct()
&安培;在另一个查询
from x in db.table
select new
{ property = 0 }
我需要的是我的查询之间的联合,但我不能使两个部分相等
所以我可以同时使用这两个结果var query = part1.union(part2)
编辑我不确定我是否省略了声明属性被声明为十进制具有任何重要性
编辑
找到了一个解决方案,我将小数转换为双倍
(from x in db.table
from d in db.table2
from c in db2.table
select new {
property = (x.property == 0) ?
((d.property == null) ? 0 : d.property ) :
((c.property == null) ? 0 : c.property )}).distinct()
&在另一个查询中
from x in db.table
select new
{ property = 0.000 }
&那么我转换的价值是第二部分
(from x in db.table
from d in db.table2
from c in db2.table
select new {
property = (x.property == 0) ?
((d.property == null) ? 0 : double.parse(d.property.ToString()) ) :
((c.property == null) ? 0 : double.parse(c.property.ToString()) )}).distinct()
编辑
由于某种原因,问题仍然存在,就像转换不是&# 39;工作(匿名错误)
更新4.0
var query_1 = (from d in ogcc.table
from adh in vclt.table
from a in vclt.table
where
stuff
select new
{
tx_int = "0" //the that keeps the anonymous error
}).Distinct();
//union
var query_2 = from d in prtf.table
from c in prtf.table
from a in vclt.table.Where(a => (c.num_credit == a.no_dos_adh || c.ref_cred == a.no_dos_adh)) //left join
where
stuff
select new
{
tx_int = prtf.Stored_Procedure(c.num_credit).ToString(),
};
更新+简化的查询代码
其中只有一个保留了错误&我无法修复它
我尝试将这两个转换为字符串,但错误仍然存在
答案 0 :(得分:1)
由于您正在检查,例如d.property == null
,我假设d
是Nullable<>
,因此您希望使用其.Value
属性,以便“重新使用int
代替int?
。
select new {
property = (x.property == 0) ?
((d.property == null) ? 0 : d.property.Value ) :
((c.property == null) ? 0 : c.property.Value )}