加入两个表来获取User.Name

时间:2013-10-05 09:12:08

标签: c# sql linq entity-framework

我正在使用C#,.NET Framework 4.0和Entity Framework Code First开发WCF RESTful服务。

这些是我的表格

enter image description here

我想在数据库中选择它:

SELECT PostLine.UserId, PostLine.Description, PostLine.DateUtc, User.Name 
FROM PostLine, User
WHERE User.UserId == PostLine.UserId

为PostLine.DateUtc添加过滤器

现在,我这样做:

DateTime fourDaysAgo = DateTime.Now.Date.AddDays(-4);

var postLines =
    context.PostLines.Where(p => DateTime.Compare(p.DateUtc, fourDaysAgo) > 0);

但我的问题是我不知道如何加入User表来获取User.name

如何加入User表以获取User.Name?

2 个答案:

答案 0 :(得分:1)

确保您的PostLine类具有User类型的属性:

public class PostLine
{
    // your properties

    public User Author { get; set; }
}

然后:

string authorOfFirstPostLine = context.PostLines.First().Author.Name;

答案 1 :(得分:0)

试试这个:

DateTime fourDaysAgo = DateTime.Now.Date.AddDays(-4);

var postLines =
    context.PostLines
             .Join(context.User,
                   p => p.UserId,
                   u => u.UserId,
                   (p, i) => new {p.UserId, p.Description, p.DateUtc, u.Name})
             .Where(p => DateTime.Compare(p.DateUtc, fourDaysAgo) > 0);