2016-03-30 4 views
1

4行のループを書くのではなく、新しいList(実際にはIEnumerable)をLINQで作成したいと思います。ラムダ式をLINQに供給することができ、その式を使用してリストの要素をマップすることができますが、Listが保持する型は変更されますか?LINQを使用して異種タイプを保持するリストを作成しますか?

// My List of objects 
List<MyDBDocType> myDBDocs = ...; 
// How they are mapped 
BsonDocument myDBDocAsBson = myDBDocs[0].ToBsonDocument(); 
// Function signature that takes a List that holds a separate type 
MyDocCollection.InsertManyAsync([IEnumerable<BsonDocument> documents], ...); 

答えて

3

LINQいくつかのメソッドを持っているいくつかの他はありませんが、いくつかは、データ型を変更します。 Select句は、データの種類を変えることができる。例えば

は、:

//suppose your MyDBDocType has property called MyInt with data type: int 
var result = myDBDocs.Select(x => x.MyInt); //this will result in IEnumerable<int> 

しかしWhere方法は、データ型を保持し、それだけでラムダ式に基づいて結果をフィルタリング:その他

var result = myDBDocs.Select(x => x.MyInt > 3); //this will result in IEnumerable<MyDBDocType> 

LINQ方法は、FirstLastFirstOrDefaultExceptIntersectDistinctSkipSkipWhileなど...データタイプも変更しないでください。しかし、SelectSelectManyのようなメソッドは、データ型を変更します。

データ型を変更せずに元のクエリの特定の結果のみをフィルタ処理する場合は、Where

を使用することを検討してください。
関連する問題