首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在linq中查询

如何在linq中查询
EN

Stack Overflow用户
提问于 2010-09-24 23:24:48
回答 2查看 64关注 0票数 0

我有这个SQL

代码语言:javascript
复制
SELECT *
FROM  [dbo].[LeftHand]
        left outer JOIN [dbo].[Head]  ON [LeftHand].[ID] = [Head].[LeftHand_Id]
        WHERE [Head].[RightHand_Id] Not IN (59,60,63,64,65) or [Head].[RightHand_Id] is null 

代码语言:javascript
复制
        [Head]
        */  \*
        /    \
      1/      \1
[LeftHand]  [RightHand]       ([LeftHand may have more than one [RightHand]  )

正如您所看到的,我想获取所有的LeftHand对象(包括那些没有任何RightHand的对象),但是如果它们有一个RightHand,那么它的ID必须来自这个列表(59,60,63,64,65)

,那么我如何在LINQ ?中获得相同的结果?

对实体来说,

框架4

谢谢

EN

回答 2

Stack Overflow用户

发布于 2010-09-24 23:42:50

你能为我澄清一点吗?在你的问题中,你说身份证必须是从名单上

但是如果他们有一个RightHand,那么它的ID必须来自这个列表(59,60,63,64,65)

但是SQL却恰恰相反;它将IDs排除在列表之外。

,Head.RightHand_Id非IN (59,60,63,64,65)

您希望将ID包括在列表中还是将它们排除在外?

假设您确实希望将它们排除在外;这应该对您有好处。

代码语言:javascript
复制
using (var context = new ContextName())
{
    //here are the ids we want to filter by
    var ids = new List<int> { 59,60,63,64,65 };
    //get all left hands without a matching right hand
    var result = context.LeftHands.Where(l => l.Head.RightHand_Id == null
                                           //or right hands that aren't in the list
                                           || !ids.Contains(l.Head.RightHand_Id));
}

如果您想要包含它们,请更改代码的这一部分.

代码语言:javascript
复制
//or right hands that aren't in the list
|| !ids.Contains(l.Head.RightHand_Id));

像这样..。

代码语言:javascript
复制
//or right hands that are in the list
|| ids.Contains(l.Head.RightHand_Id));
票数 0
EN

Stack Overflow用户

发布于 2010-09-25 10:50:18

我解决了

万一有人需要答案

代码语言:javascript
复制
using (var context = new ContextName())
{
    var ids = new List<int> { 59,60,63,64,65 };
    var result =
        from l in context.LeftHand
        join Head in contaxt.Head on l equals Head.LeftHand into ljh
        from j1 in ljh.DefaultIfEmpty()
        where !ids.Contains(j1.RightHand.ID) || j1 == null
        select l;
}

谢谢,DoctaJonez,你的回答帮助我做到了这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3791711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档