请用简单的英语将它从C#翻译成SQL

时间:2013-07-24 21:48:12

标签: c# sql

有人可以用英语打破这个c#吗?是否有可能以某种方式在那里添加联接?

return db.Providers.Where(n => n.LastName.StartsWith(prefixText)).OrderBy(
       n=>n.LastName).Select(n => n.LastName).Take(count).ToArray();

感谢。

4 个答案:

答案 0 :(得分:1)

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

这意味着:

向我提供表ProvidersLastName列以 PrefixText 开头的所有行(无论该变量包含什么)。我希望它们按LastName列的字母顺序排序,我只想要第一个计数行(即如果count等于50,那么你最多可以达到50行行)

当然,你可以做JOIN。您可以在Where表达式中引用另一个表:

db.Providers.Where(n => n.ProviderGroup.ADgroup == 'Active Dir Group')

如果您的模型提供表格之间的必要关系,框架将自动加入 ADgroup

答案 1 :(得分:0)

以字母顺序升序获取姓氏以变量前缀Text中的文本开头的所有提供者的姓氏号码。

答案 2 :(得分:0)

这将返回一个包含count姓氏的数组,按字母顺序递增排序,并以prefixText开头。

答案 3 :(得分:0)

这是相应的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();