只返回对象的几个属性
本文关键字:几个 属性 返回 对象 | 更新日期: 2023-09-27 18:06:38
如果我有一个对象列表,假设有10个属性,我想返回这些对象的列表但10个属性中只有3个可用,我该怎么做?
public class Example
{
public int attr1 {get;set;}
public int attr2 {get;set;}
public int attr3 {get;set;}
public int attr4 {get;set;}
public int attr5 {get;set;}
}
return ExampleList; //have the return value be a list with only attr1, 2, and 3 visible.
您可以使用LINQ与Select
方法并返回匿名类型:
var result = ExampleList.Select(x => new { x.attr1, x.attr2, x.attr3 });
或者,用3个属性显式定义你自己的类,如果你从域实体转换为视图模型或Dto对象,这种情况很常见:
class Dto
{
public int Pro1 { get; set; }
public int Pro2 { get; set; }
public int Pro3 { get; set; }
}
var result = ExampleList.Select(x => new Dto {
Pro1 = x.attr1,
Pro2 = x.attr2,
Pro3 = x.attr3
});
或者如果您只想要一个转储类,您可以使用Tuple
:
var result = ExampleList.Select(x => Tuple.Create(x.attr1, x.attr2, x.attr3));
设置属性为空并使用对象初始化器
public class Example
{
public int? attr1 {get;set;}
public int? attr2 {get;set;}
public int? attr3 {get;set;}
public int? attr4 {get;set;}
public int? attr5 {get;set;}
}
使用LINQ投影算子:
var resultList = ExampleList.Select(x => new
{
x.attr1,
x.attr2,
x.attr3
});
或者如果您需要指定其他道具名称:
var resultList = ExampleList.Select(x => new
{
PropName1 = x.attr1,
PropName2 = x.attr2,
PropName2 = x.attr3, // <- The last comma can be leaved here.
});
注意结果enumerable不是Example
类型,而是预编译(不是运行时)创建的匿名类型