2014-02-22 141 views
0

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

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

该项目模型Creator作为这样的导航属性:

 public User Creator { get; set; } 

它工作正常,但它加载整个用户模型中,当我真的只是想第一个名字和姓氏。

如何指定我只希望从用户模型返回特定属性?

+0

你可以仅用一部分属性实现一个实体对象。这可能会创建无效的实体。你必须投影到另一个类,匿名或命名。为此定义DTO或视图模型类是很常见的。 –

回答

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 }); 
+0

我如何返回IQueryable?我似乎错过了一步 – user2827377

相关问题