这是我的代码。我想在单个var结果中组合这2个LINQ查询。我使用这些技术:
var result = queryOne.Union(queryTwo);
var result = queryOne.Concat(queryTwo);
var result = Enumerable.Union(queryOne, queryTwo);
这不起作用。怎么做对了?我是LINQ和C#的新成员。
var queryOne = await (from x in _context.DwPropertyMasters
where
x.LandId == 2
select new
{
x.LandId,
x.MapPointX,
x.MapPointY,
x.Location,
a = x.Development == null || x.Development == "" ? x.Location : x.Development,
AreaSize = x.AreaSize ?? 0,
Premium = x.Premium ?? 0,
b = (((x.Premium == 0 ? null : x.Premium) * 100000000) / (x.AreaSize == 0 ? null : x.AreaSize)) ?? 0,
x.Developer,
x.YearTender,
c = x.Development ?? x.Location,
AreaSize2 = x.AreaSize2 ?? 0,
d = (((x.Premium == 0 ? null : x.Premium) * 100000000) / (x.AreaSize2 == 0 ? null : x.AreaSize2)) ?? 0,
}).ToArrayAsync();
var queryTwo = await (from y in _context.DwPropertyDetails
where
y.LandId == 2
orderby
y.Block,
y.Asp descending
select new
{
y.LandDetailId,
y.LandId,
a = y.Pasp ?? "",
b = y.Asp ?? "",
c = y.Tasp ?? "",
y.Block,
y.Floor,
y.Unit,
d = y.CarParking ?? "",
y.SalePrice,
e = y.Revision ?? "",
y.VendorRelate,
y.TransactionPrice,
y.FlatType,
y.ActualSize,
f =
((y.TransactionPrice == 0 ? null : y.TransactionPrice) / (y.ActualSize == 0 ? null : y.ActualSize)) ??
0
}).ToArrayAsync();
var singleQuery = queryOne.Union(queryTwo);
var result = queryOne.Union(queryTwo);
var result = queryOne.Concat(queryTwo);
var result = Enumerable.Union(queryOne, queryTwo);
这不起作用。怎么做对了?我是LINQ和C#的新成员。
答案 0 :(得分:1)
你的第一个LINQ返回的枚举数与第二个不同,并且你无法连接这两个对象。他们必须返回相同类型的对象。
p + geom_point(data = dat, aes(x = A, y = B))
您必须为相同的顺序和类型使用相同数量的属性,或者您可以为其定义自定义类。
答案 1 :(得分:0)
你的问题现在缺乏背景,但是因为你不能结合2 IEnumerable<T>
的唯一原因是因为它们的类型不同。
如果您在2个地方使用匿名类型,那么将这个匿名类型放入其自己的课程中,这样您应该能够.Concat
2个结果。
但是你可以在2种查询类型中看到一些明显的差异。另一种选择是创建第三种类型,其接受包含其他2个查询的所有成员。