【问题标题】:Please Translate this from C# to SQL in plain english [closed]请用简单的英语将其从 C# 翻译成 SQL [关闭]
【发布时间】:2013-07-24 21:48:11
【问题描述】:

有人可以用英文分解这个c#吗?是否有可能以某种方式在其中添加联接?

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

谢谢。

【问题讨论】:

  • -1 因为你的问题和目标如此不清楚。

标签: c# sql


【解决方案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

这意味着:

给我表 Providers 中的所有行,其中 LastName 列以 PrefixText 开头(无论该变量包含什么)。我希望它们按LastName 列的字母顺序排序,并且我只想要前 count 行(即,如果 count 等于 50,则最多可以达到 50 行)

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

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

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

【讨论】:

  • select LastName,不是select *
  • @JoeEnos - 是的,很好。
  • 是否可以将 db.providers 的连接添加到另一个表?在 c# 中会是什么样子?
  • @Sj14420 - 只需引用模型中引用另一个表的属性。它会为你添加必要的joins
  • 我不知道该怎么做..
【解决方案2】:

获取LastName以变量prefixText中的文本开头的所有Provider的x个姓,按字母升序排列。

【讨论】:

  • 谢谢!是否可以将 db.providers 的连接添加到另一个表?那会是什么样子?
  • @Sj14420,你在找什么样的加盟?内、左、右还是全?
  • 内部。类似于在 ad.providerid = prov.providerid 上加入 ADGroups 广告
【解决方案3】:

这将返回一个数组,其中包含count 姓氏,按字母升序排列,并以prefixText 开头。

【讨论】:

    【解决方案4】:

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

    【讨论】:

    • 我需要一个连接来限制 Ajax 自动扩展器的结果...
    • 请看我更新的答案。一般可以在查询中做limit操作。
    • 好的,但是如果我需要限制的东西与姓氏在不同的表中怎么办?
    • 对不起,你能解释一下吗?
    • 当然,我有一个提供者表,其中包含最后将返回到文本框的 lastname 列。然后我有一个广告组表。我只想显示与用户登录的 AD 组关联的提供程序名称,我将其捕获为会话变量。所以 SQL 会是这样的: select lastname from providers p join adgroup ad on ad.providergroupid = p.providergroupid where ad.ADgroup = 'Active Dir Group'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    相关资源
    最近更新 更多