仅返回特定属性

时间:2013-10-29 14:53:18

标签: c# asp.net-mvc entity-framework asp.net-mvc-4 asp.net-web-api

我已经开发了我在MVC4中控制的第一个API,通过脚手架我可以自动输出一个项目列表:

// GET api/ItemList
public IEnumerable<ItemOption> GetItemOptions()
{
    var itemoptions = db.ItemOptions.Include(i => i.Item);
    return itemoptions.AsEnumerable();
}

这显示了我的模型中的所有项目属性:

public class ItemOption
{
    public int ItemOptionId { get; set; }
    public bool Active { get; set; }
    public string Name { get; set; }
    public string test1 { get; set; }
    public double PriceNet { get; set; }
}

如何指定我希望返回的特定字段?例如,我只想要返回ItemOptionId,Active和Name。

我尝试添加其他包含,但这似乎是在对象级别。

2 个答案:

答案 0 :(得分:2)

尝试创建一个新类型来表示您想要返回的属性:

public class ItemOptionResult
{
    public int ItemOptionId { get; set; }
    public bool Active { get; set; }
    public string Name { get; set; }
}

然后投射您的ItemOption集合,如下所示:

// GET api/ItemList
public IEnumerable<ItemOptionResult> GetItemOptions()
{`enter code here`
    var itemoptions =
        db.ItemOptions
          .Select(i => 
           new ItemOptionResult
           { 
               ItemOptionId = i.ItemOptionId, 
               Active = i.Active, 
               Name = i.Name 
           });
    return itemoptions.AsEnumerable();
}

答案 1 :(得分:0)

试试这个:

var itemoptions = db.ItemOptions.Select(io => new ItemOption()
                                              {
                                                   ItemOptionId = io.ItemOptionId,
                                                   Active = io.Active ,
                                                   Name = io.Name
                                              }
return itemoptions.AsEnumerable();