首页 新闻 会员 周边 捐助

Linq的思维逻辑方式

0
悬赏园豆:5 [已关闭问题] 关闭于 2014-03-20 11:53

      想问下linq 基本语法格式什么是怎样的?和SQL相比较而言,对于初学者应该以什么样的逻辑思维考虑数据操作问题?

     普通的Update  多条件修改又怎么样实现,最好中文描述下逻辑思维

Anily丶的主页 Anily丶 | 初学一级 | 园豆:190
提问于:2014-01-08 13:31
< >
分享
所有回答(5)
0

linq是一种通用的数据访问语言,语法类似SQL。操作数据库时有LINQ to SQL、LINQ to Entities来选择。当采用LINQ to SQL或者LINQ to Entities时就是一种ORM映射,每天数据库记录就是一个对象。Update的时候只要更改这个对象的属性即可。

具体的语法,我建议参考 http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b

这个链接是LINQ 101 smaples,这么多例子基本把每一种情况都说到了。

ocean | 园豆:824 (小虾三级) | 2014-01-08 13:36

update

merchantInfo

set merchantInfo.tel_no = @tel_no

inner join merchantUpdate

where

merchantInfo.merchant_id = merchantUpdate.mercahnt_id

and

merchantInfo.login_name = merchantUpdate.merchantUpdate.login_name

那这个SQL语句例子处理的话如何进行转换,只进行语句操作就好,别的什么设置操作不用解释,我个人写的是这样的 

merchantinfo merchantInfo = (                                                from merchant in edm.merchantinfo                                           where merchant.merchant_id == merchantUpdate .merchantId 

and merchant.login_name = merchantUpdate.login_name 

                                                select merchant                                                  ).Single();

但是貌似完全不对!根本不清楚怎样的逻辑

支持(0) 反对(0) Anily丶 | 园豆:190 (初学一级) | 2014-01-08 13:56
0

http://www.cnblogs.com/aehyok/archive/2013/04/24/3039930.html    慢慢去了解下吧,这是最基础的。

aehyok | 园豆:1212 (小虾三级) | 2014-01-08 15:00
0

LINQ不是简单的SQL翻译,主要目的是实现ORM,将数据以对象的方式实现。

你要实现的是一个批处理更新,这时候如果用LINQ对象的方式,确实会显得比较笨拙。

因为LINQ是这样操作的,

首先,取得要更新的对象

var query= from c in db.MerchantInfo

      join d in db.MerchantUpdate

                  on c.merchant_id equals d.merchant_id and c.login_name  equals d.login_name 

      select c

 

for each row in query

   row.tel_no=getTelNofromMerchantUpdate(row.merchant_id, row.login_name)

    '必须自己实现getTelNoFromMerchantUpdate

next 

 

db.submitchanges

 

所以对于类似你这样的批量操作语名,

LINQ也支持

db.executeCommand("update merchantInfo set merchantInfo.tel_no = @tel_no inner join merchantUpdate

where merchantInfo.merchant_id = merchantUpdate.mercahnt_id and merchantInfo.login_name merchantUpdate.merchantUpdate.login_name")

大致上是这个意思,没有打开VS,有些关键字可能是错的,楼下请不要吹毛求疵,谢谢!

爱编程的大叔 | 园豆:30844 (高人七级) | 2014-01-08 15:02

【LINQ不是简单的SQL翻译,主要目的是实现ORM】这句话是不对的。LINQ to SQL的主要目的才是实现ORM,LINQ本身和ORM毛关系都没有。LINQ本身的目的是一种通用的查询语言,比如内存中的集合对象、关系型数据库、XML等等,换句话说,是希望我们采用一种统一的语法,能查询各类数据,而且是可扩展的,所以也有什么LINQ to SharePoint等等各种扩展的。

支持(0) 反对(0) ocean | 园豆:824 (小虾三级) | 2014-01-10 09:26

@ocean: 偷懒了,楼主想问的是LINQ TO SQL,

我回答的也是LINQ TO SQL。至于LINQ,如你所说。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30844 (高人七级) | 2014-01-10 23:56
0

其实没那么麻烦,就是sql的那几个关键字而已,你就当sql用就行了

幕三少 | 园豆:1384 (小虾三级) | 2014-01-08 15:41
0

LINQ的用途不是做数据库查询的,是会对通用的数据集合用的。

和SQL长的比较像而已,没什么必须的联系。

ORM是通过LINQ的语法长处配合Expression Tree实现。

Ninja_Lu | 园豆:289 (菜鸟二级) | 2014-01-08 15:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册