首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用LINQ从两个实体中选择

使用LINQ从两个实体中选择
EN

Stack Overflow用户
提问于 2013-05-04 20:42:57
回答 2查看 149关注 0票数 0

在LINQ中,我有一些关于.include的问题。如果有人能向我展示实现这一点的查询,我将不胜感激:

我有两个实体,User和Validation (这是一系列验证代码)。它们在EF5中的关系是1:*。我正在尝试获取一个User对象并立即加载Validations集合。

此时,我正在做这件事(cx是using块中的上下文):

代码语言:javascript
复制
var user = cx.Users
            .Where(u => u.UserGuid.Equals(UserGuid))
            .FirstOrDefault();

if (user == null)
{
    return 0;
}

var validation = cx.Validations
            .Where(v => v.Code.Equals(Code))
            .Where(v => v.UserId.Equals(user.UserId))
            .FirstOrDefault();

但是我如何在一个查询中实现这一点,这样我就可以使用

代码语言:javascript
复制
user.Validations.FirstOrDefault();

而不会得到错误,而只获得满足Validation.Code ==代码测试的验证?

谢谢你的帮助(我知道我听起来很困惑,但那是因为我真的很困惑)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-04 20:50:45

你有没有试过这样的东西:

代码语言:javascript
复制
var validation = cx.Validations.Where(v=>v.Code==Code &&
                                         cx.Users.Any(u=>u.UserID==v.UserID && 
                                                         u.UserGuid==UserGuid)
                                      ).FirstOrDefault();
票数 1
EN

Stack Overflow用户

发布于 2013-05-04 20:57:01

您可能还需要通过执行以下操作来包括相关记录:

代码语言:javascript
复制
var user = cx.Users
             .Where(u => u.UserGuid.Equals(UserGuid))
             .Include(u => u.Validations)
             .FirstOrDefault();

但是,您应该能够使用以下命令选择请求的验证

代码语言:javascript
复制
user.Validations
    .FirstOrDefault(v => v.Code.Equals(Code));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16374442

复制
相关文章

相似问题

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