如何使用LINQ lambda表达式仅将特定字段返回到列表

时间:2012-10-27 12:51:00

标签: asp.net-mvc linq asp.net-web-api

  

可能重复:
  Retrieve an object from entityframework without ONE field

我正在使用asp.net mvc。目前我正在使用EF 4.1代码的第一个模型。这里有记录清单(43)。我的课就像,

public class MyTable
{
public string field1{get; set;}
public string field2{get; set;}
.
.
.
public string field20{get; set;}
} 

我将它们作为List列表返回。但我不希望field20返回。那么我怎么能跳过我的列表中的特定字段。我用过喜欢的,

(from m in context.MyTable select new{m.field1,m.field2,...,m.field19}).ToList(); 

它的工作非常好。但我希望使用lambda表达式语法(如

)获得相同的结果
context.MyTable.Skip() or any etc.

如何仅返回列表中的特定字段。

1 个答案:

答案 0 :(得分:0)

你可以写

context.MyTable.Select(x => new { x.field1, x.field2, ..., x.field19}).ToList();

如果您不想写所有19个字段,可以MyTable类实现IEnumerable

public class MyTable : IEnumerable<object>

public IEnumerator<object> GetEnumerator()
{
    List<object> list = new List<object>();
    list.Add(field1);
    list.Add(field2);
    ...
    list.Add(field20);
    return list.GetEnumerator();
}

System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
    return GetEnumerator();
}

然后你可以写

context.MyTable.Select(x => x.Take(19).ToList()).ToList();