web-dev-qa-db-ja.com

LINQラムダ式で複数のプロパティを選択するにはどうすればよいですか?

次のラムダ式をよく使用します

MyList.Select(x => x.Id).ToList();

ラムダ式を使用して複数のプロパティを取得することは可能ですか?例:MyListのIdName

次の構文を使用できることを知っています。

(from item in MyList
 select new { item.Id, item.Name }).ToList();

ラムダ式を使用して同じことを行うことはできますか?

14
Tony
MyList.Select(x => new { x.Id, x.Name }).ToList();
39
Anthony Pegram

興味のある機能はC#3です 匿名タイプ

次のコマンドを使用して、匿名タイプの新しいインスタンスを作成できます。

var v = new { Amount = 108, Message = "Hello", this.Text };

もちろん、これはラムダとしても機能します。

SomeThing.Select( () => new {X=1,Y=2} )

コードのどこにでも。また、プロパティ名も取得します。この場合、明示的に指定する必要はありません(私の例では、匿名タイプの3番目のメンバーは自動的にTextという名前になります。

残念ながら、これらを関数の非ジェネリックな戻り値の型として使用することはできません。

3
CodesInChaos
var sample = dbcontext.MyList
                      .Select(m => new Mylist{ sampleid=m.sampleid,item=m.item })
                      .ToList();
1
Srinivas