【问题标题】:Converting SQL to Linq syntax将 SQL 转换为 Linq 语法
【发布时间】:2017-01-09 12:43:58
【问题描述】:

我正在尝试将 sql 语句转换为 linq,但确实能够做到这一点。我的sql语句是-

string strSQL = string.Format("select   * from  test1({0}, {1}) order by ID ASC ", IsNotNull(CID), IsNotNull(Names));

有人可以帮我转换一下吗?

谢谢

【问题讨论】:

标签: c# sql-server linq asp.net-mvc-4


【解决方案1】:

似乎 test1 是 Test1 类的对象表,并且 Test1 类具有可为空的属性 CID 和 Names,以及 IComparable 属性 Id(因此您可以按 Id 排序)。

我不确定您是否使用实体框架,但显然您将有一些东西可以访问您的 test1 对象表:

IEnumerable<Test1> test1Objects = ...

使用实体框架会是这样的:

IEnumerable<Test1> test1Objects = myDbContext.Test1s;

您的 linq 查询将是:

IEnumerable<Test1> result = test1Objects
    .Where(test1 => test1.CID != null && test1.Names != null)
    .Orderby(test1 = test1.Id)

换句话说:从 test1Objects 序列中的每个 test1 项目中,只取 test1.CID 的非空值和 test1.Names 的非空值的那些 test1 项目。按 Id 升序对结果序列进行排序

这假定 CID 是一个类。如果 CID 是一个可以为空的值类型,比如 int?还是 DateTime?,你最好使用:

.Where(test1 => test1.CID.HasValue() && ...

【讨论】:

  • 您好,谢谢您的回复,很遗憾,我没有使用实体框架,我使用的是 ado.net 连接字符串。
  • 但是,要使用 Linq,您仍然需要具有这些属性的某个类的 IEnumerable。看起来相似的地方
  • 谢谢,我会理解的
【解决方案2】:

为此使用 Linqer。它是一个将 SQL 转换为 Linq 的工具。并非所有查询都可以转换,但您会发现它是一个强大的工具。

http://www.sqltolinq.com/

【讨论】:

  • 谢谢,但没有其他办法可以做到这一点,我无法运行 exe 文件
【解决方案3】:

您是否尝试过Linqer 一个 SQL-> LINQ 转换器, 或LINQPad

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-23
  • 2013-02-15
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多