【发布时间】:2019-03-20 11:01:56
【问题描述】:
我会用扩展方法翻译这个查询 我也会将此查询合并到一个带有扩展方法的查询中
var variants = _ctx.Varianti.Where(i=>i.attivo==0);
var allProducts = await (from p in _ctx.Articoli
where p.cat==1
join v in variants on p.code equals v.code into gj
from articoli in gj.DefaultIfEmpty()
select new {
Codart = p.Codart,
Codvar = articoli.Codvar,
}).ToListAsync();
我的课
类Articolo{ 公共字符串 Codart //key 公开双倍价格 }
类变量{ 公共字符串 Codart //key 公共字符串 Codvar // 密钥 公众态度 }
我必须这样退货
Prod1-Variant1 Prod2-(无变体) prod3-变体1 prod4-Variant1 prod4-Variant2 prod5-(无变体)
我应该只过滤带有 attivo==0 的变体 如果没有变体,所有产品都没有变体
代码运行良好,但我需要在对数据库的单个查询中进行优化 还有扩展方法
在T-Sql中应该是这样的:
SELECT Codart,
Codvar
FROM dbo.Articoli
LEFT OUTER JOIN dbo.Varianti
ON dbo.Articoli.Codart = dbo.Varianti.Codart
WHERE (Cat = 1)
AND (attivo = 0)
【问题讨论】:
-
我不明白你的问题。你能:提供一些示例数据和示例类吗?你能改写你的问题吗?
-
我希望我解释清楚...让我知道。再见
-
由于
variants是 IQuerable 它将是对数据库的单个查询。同样使用 lambda 语法而不是查询语法编写它对性能没有影响。但如果你真的想这样做,它就是这样做的:stackoverflow.com/a/584840/468973 -
如果我在类文章中将导航属性添加到 Varianti 作为 List
Varianti 那么可以提高性能吗?