Linq查询结果集比对应的sql语句查询结果集不一致,存在重复结果

来源:互联网 发布:狸窝dvd刻录软件 编辑:程序博客网 时间:2024/05/13 10:07

    在MVC架构的基础上开发,当然少不了Linq的身影.
    Linq的推出,让我们从结构化查询语言的语法中解放出来,它是建立在ado.net及C#的基础上,自动将Linq语句翻译成sql语句,同时将结果集返回.
   相对于sql而言,Linq to sql在编译时就检查语法的正确性;而SQL语句则不同,通过拼接字符串的形式组合成我们需要的SQL语句,只有在运行时才能验证其正确性。
    Linq语句看着逻辑清晰、语句简洁,然而在代码调试时却没有拼接字符串的sql语句那么直接、简单、易懂……
…..
    扯得有点远啦,主要是想记录一下今天遇到的问题:发现Linq查询视图得到的结果集与转换后sql语句的结果集不一致,Linq结果集中的Count数量大于SQL查询的结果集,即Linq结果集中存在重复数据!!!

eg:Linq语句
    var users=from b in VUserInfo---VUserInfo为视图
                    where b.CustGuid.Equals('4dc41e6b-0a1d-4a29-b6e2-6dddb987f320')
                    select b;

结果集为

                   列1                     CustGuid
          1       001         4dc41e6b-0a1d-4a29-b6e2-6dddb987f320
          2       002         4dc41e6b-0a1d-4a29-b6e2-6dddb987f320
          3       002         4dc41e6b-0a1d-4a29-b6e2-6dddb987f320(存在重复数据,与上述数据完全一致)


如果采用sql语句查询:select * from VUserInfo where CustGuid='4dc41e6b-0a1d-4a29-b6e2-6dddb987f320'

结果集为

                   列1                     CustGuid
          1       001         4dc41e6b-0a1d-4a29-b6e2-6dddb987f320
          2       002         4dc41e6b-0a1d-4a29-b6e2-6dddb987f320(此结果集正确)




       那么可以通过users.Distinct()去重得到准确的结果集;
       出现这种问题的原因待研究,暂时记录一下吧。

1 0
原创粉丝点击