从WebAPI IQueryable中排除列

时间:2013-04-18 20:58:15

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

是否可以从我的WebAPI的IQueryable函数中排除一列?例如如何从我的人员实体中排除属性“FirstName”:

[HttpGet]
public IQueryable<Contact> GetPeople()
{
    return _contextProvider.Context.People;
}

pseudocoded:

[HttpGet]
public IQueryable<Contact> GetPeople()
{
    return _contextProvider.Context.People.ExcludeColumn("FirstName");
}

2 个答案:

答案 0 :(得分:7)

将结果手动投影到Contact实体,并且不提供FirstName列的数据:

[HttpGet]
public IEnumerable<Contact> GetPeople()
{
    return from p in _contextProvider.Context.People
           select new Contact {
               Id = p.Id,
               LastName = p.LastName
           };
}

BTW我会创建一些没有FirstName属性的特定DTO对象。

答案 1 :(得分:1)

另一种方法是使用Runtime.Serialization.IgnoreDataMember来装饰列。

[Runtime.Serialization.IgnoreDataMember]
public string FirstName { get; set; }