2017-01-09 88 views
0

我想sql语句转换为LINQ但没能做到这一点。我的sql语句是 -转换SQL到LINQ语法

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

有人可以帮助我如何转换此。

谢谢

+0

你也可以尝试LinqPad https://www.linqpad.net/ –

回答

0

看来,test1的是类的Test1的对象的表,而这个类的Test1有CID和名称为空的属性,和一个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) 

在口头上:从每TES test1Objects序列中T1项目,只需要有test1.CID的非空值和test1.Names的非空值的test1的项目。顺序递增ID顺序

结果序列这假定CID是一个类。如果CID是一个可以为空的值类型,如int?或日期时间?你最好使用:

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

嗨,谢谢你的回复,不幸的是,我没有使用实体框架,我使用ado.net connectionstring。 – jacklondon

+0

但尽管如此,使用Linq,你需要一些类的IEnumerable,这些特性。该在那里看起来类似 –

+0

谢谢,它会给我的理解 – jacklondon

0

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

http://www.sqltolinq.com/

+0

谢谢,但没有其他办法,我可以做到这一点,我不能运行exe文件 – jacklondon

0

你试过Linqer的SQL-> LINQ转换器, 或LINQPad

+0

谢谢,我不能运行exe文件 – jacklondon

+0

OK,然后请参阅此[基本LINQ查询操作(C#)...](https://msdn.microsoft.com/en-us/library/bb397927.aspx) –