当前位置: 首页 > 编程语言 > C#

SimpleOrderofSubqueriesGeneratedbyLINQ分享

时间:2023-04-10 17:22:54 C#

LINQGeneratedbySimpleOrderofSubqueries这是我的代码:varlist=db.User.Where(u=>u.Name==somename).OrderBy(u=>u.IdUser).ToList();somename是我在执行时传递的参数。输出SQL是:SELECTProject1.IdUser,Project1.NameFROM(SELECTExtent1.IdUser,Extent1.NameFROMuserASExtent1WHEREExtent1.Name='John'/*@p__linq__0*/)ASProject1ORDERBYProject1.IdUserASC输出真的应该有一个简单的子查询吗?我也试过varlist=db.User.Where(u=>u.Name.Equals(somename)).OrderBy(u=>u.IdUser).ToList();产生与上面相同的输出。如果我对参数进行硬编码,例如:varlist=db.User.Where(u=>u.Name=="John").OrderBy(u=>u.IdUser).ToList();它按预期工作,只生成SELECTExtent1.IdUser,Extent1.NameFROMuserASExtent1WHERE'John'/*@gp1*/=Extent1.NameORDERBYExtent1.IdUserASC我正在使用的东西:我不是LINQ专家所以我在这里遗漏了什么什么?查询生成与您相??同的执行计划,就像其他人一样。entityframework(和LINQtoEntites)可以帮助你在一定程度上避免编写SQL和使用SQL的麻烦。通常情况下,您不关心生成SQL,也不关心“调试”它。您只关心LINQ查询是否正确。实体框架(应该)将其转换为正确的(有时甚至是预期的)SQL(同样,执行计划很重要)。我并不是说出于性能原因您不应该查看SQL(或者更好的说法是该查询的执行计划)。但是,应在确定性能问题后执行此操作。您应该首先尝试简单地编写查询,这就是要走的路。当然,如果您了解SQL,就会知道集合世界不同于对象世界——您可以轻松地在LINQ中编写相当普通的查询(多亏了对象世界),但这最终会成为“令人讨厌的SQL(集合世界)”因为“世界之间的不匹配。以上就是C#学习教程的全部内容:LINQ生成子查询的简单序列。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: