请用通俗易懂的英语把它从C#翻译成SQL
本文关键字:翻译 SQL 通俗易懂 英语 | 更新日期: 2023-09-27 18:24:42
有人能用英语把这个c#分解一下吗?有可能以某种方式在其中添加一个联接吗?
return db.Providers.Where(n => n.LastName.StartsWith(prefixText)).OrderBy(
n=>n.LastName).Select(n => n.LastName).Take(count).ToArray();
谢谢。
SQL查询可能类似于:
SELECT LastName FROM Providers
WHERE LastName LIKE 'PrefixText%'
ORDER BY LastName
LIMIT count; -- This may be TOP in MS SQL or ROWNUM in Oracle
意思是:
给我Providers
表中的所有行,其中LastName
列以PrefixText开头(无论该变量包含什么)。我希望它们按LastName
列的字母顺序排序,并且我只希望第一个计数行(即,如果count
等于50,则最多可以得到50行)
当然,你可以做JOIN
。您可以参考Where
表达式中的另一个表:
db.Providers.Where(n => n.ProviderGroup.ADgroup == 'Active Dir Group')
如果您的模型提供了表之间的必要关系,那么框架将自动为您加入ADgroup
。
获取LastName以变量prefixText中的文本开头的所有提供者的x个姓氏,按字母升序排列。
这将返回一个数组,该数组包含count
姓氏,按字母顺序递增,以prefixText
开头。
这是相应的SQL代码:
select top @count LastName from Providers
where LastName like '+@prefixText+%'
order by LastName
为什么这里需要join
?
更新:
根据OP评论:
我需要一个
join
来限制Ajax自动扩展程序的结果。。。
您不需要连接来限制Ajax Auto Extender中的结果,只需使用SQL的top
子句或LINQ的Take
方法,就像您现在所做的那样:
db.Providers.Where(n => n.LastName.StartsWith(prefixText)).OrderBy(
n=>n.LastName).Select(n => n.LastName).Take(count).ToArray();