有人可以用英文分解这个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
意思是:
给我列以PrefixTextProviders
开头的表中的所有行(无论该变量包含什么)。我希望它们按列按字母顺序排序,并且我只想要第一个计数行(即,如果等于 50,则最多可以得到 50 行)LastName
LastName
count
当然,你可以做一个JOIN
. 您可以在Where
表达式中引用另一个表:
db.Providers.Where(n => n.ProviderGroup.ADgroup == 'Active Dir Group')
如果您的模型提供表之间的必要关系,该框架将自动为您加入。 ADgroup
获取 LastName 以变量 prefixText 中的文本开头的所有 Provider 的 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();