在一个查询中收集两个 linq 查询
Collect two linq queries in one query
我有以下entity framework方法
maList = (from p in db.full
where (p.mc_object.Contains(str))
group p by p.mc_object into g
orderby g.Count() descending
select new StringIntType
{
str = g.Key,
nbr = g.Count(),
par="object"
}).ToList();
maList = (from p in db.full
where (p.mc_owner.Contains(str))
group p by p.mc_owner into g
orderby g.Count() descending
select new StringIntType
{
str = g.Key,
nbr = g.Count(),
par="owner"
}).ToList();
我想在一次查询中完成。
您可以使用 Concat
:
var objects = from p in db.full
where (p.mc_object.Contains(str))
group p by p.mc_object into g
orderby g.Count() descending
select new StringIntType
{
str = g.Key,
nbr = g.Count(),
par="object"
};
var owner = from p in db.full
where (p.mc_owner.Contains(str))
group p by p.mc_owner into g
orderby g.Count() descending
select new StringIntType
{
str = g.Key,
nbr = g.Count(),
par="owner"
};
maList = objects.Concat(owner).ToList();
这看起来不像是一个查询,但由于 LINQ 的延迟执行,只有一个查询被发送到位于 ToList()
的数据库。
可以使用联合方式
maList = (from p in db.full
where (p.mc_object.Contains(str))
group p by p.mc_object into g
orderby g.Count() descending
select new StringIntType
{
str = g.Key,
nbr = g.Count(),
par="object"
})
.Union(from p in db.full
where (p.mc_owner.Contains(str))
group p by p.mc_owner into g
orderby g.Count() descending
select new StringIntType
{
str = g.Key,
nbr = g.Count(),
par="owner"
}).ToList();
我有以下entity framework方法
maList = (from p in db.full
where (p.mc_object.Contains(str))
group p by p.mc_object into g
orderby g.Count() descending
select new StringIntType
{
str = g.Key,
nbr = g.Count(),
par="object"
}).ToList();
maList = (from p in db.full
where (p.mc_owner.Contains(str))
group p by p.mc_owner into g
orderby g.Count() descending
select new StringIntType
{
str = g.Key,
nbr = g.Count(),
par="owner"
}).ToList();
我想在一次查询中完成。
您可以使用 Concat
:
var objects = from p in db.full
where (p.mc_object.Contains(str))
group p by p.mc_object into g
orderby g.Count() descending
select new StringIntType
{
str = g.Key,
nbr = g.Count(),
par="object"
};
var owner = from p in db.full
where (p.mc_owner.Contains(str))
group p by p.mc_owner into g
orderby g.Count() descending
select new StringIntType
{
str = g.Key,
nbr = g.Count(),
par="owner"
};
maList = objects.Concat(owner).ToList();
这看起来不像是一个查询,但由于 LINQ 的延迟执行,只有一个查询被发送到位于 ToList()
的数据库。
可以使用联合方式
maList = (from p in db.full
where (p.mc_object.Contains(str))
group p by p.mc_object into g
orderby g.Count() descending
select new StringIntType
{
str = g.Key,
nbr = g.Count(),
par="object"
})
.Union(from p in db.full
where (p.mc_owner.Contains(str))
group p by p.mc_owner into g
orderby g.Count() descending
select new StringIntType
{
str = g.Key,
nbr = g.Count(),
par="owner"
}).ToList();