仅包含()特定属性

时间:2014-02-22 20:19:20

标签: linq entity-framework

这里我正在检索项目并包括项目的创建者。目标是仅包含创建者的名字和姓氏,而不是整个用户模型。

var items = _db.Items.Include("Creator")

项目模型具有Creator作为导航属性,如下所示:

      public User Creator { get; set; }

它工作正常,但它加载整个用户模型,当我真正想要名字和姓氏时。

如何指定我只想要从用户模型返回的特定属性?

1 个答案:

答案 0 :(得分:1)

使用Include无法做到这一点。您可以改为使用Select

var items = _db.Items.Select(i => new { Item = i, Creator = new { i.Creator.FirstName, i.Creator.LastName } });

<强>更新

如果您需要将该查询作为方法结果返回,则必须创建一个可以保存结果的类:

public class ItemWithCreatorNames
{
    public Item Item { get; set; }
    public string CreatorFirstName { get; set; }
    public string CreatorLastName { get; set; }
}

var items = _db.Items.Select(i => new ItemWithCreatorNames { Item = i, CreatorFirstName  = i.Creator.FirstName, CreatorLastName  = i.Creator.LastName });