2

たとえば、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.
4

3 に答える 3

7

メソッドで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));
于 2013-03-29T03:56:17.413 に答える
0

プロパティを null 可能にして、Object Initializersを使用します。

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;}
}
于 2013-03-29T03:57:39.163 に答える
0

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.
    });

結果の列挙型は型ではなく、Exampleコンパイル前に作成された (実行時ではない) 匿名型であることに注意してください。

于 2013-03-29T03:58:09.360 に答える