C# 使用LINQ创建一个保存不同网络类型的列表?

C# 使用LINQ创建一个保存不同网络类型的列表?,c#,mongodb,linq,C#,Mongodb,Linq,我想用LINQ创建一个新的列表(实际上是一个IEnumerable),而不是编写一个4行循环。我知道我可以向LINQ提供一个lambda表达式,它将使用该表达式映射列表的元素,但是它会改变列表所持有的类型吗 // My List of objects List<MyDBDocType> myDBDocs = ...; // How they are mapped BsonDocument myDBDocAsBson = myDBDocs[0].ToBsonDocument(); /

我想用LINQ创建一个新的
列表(实际上是一个
IEnumerable
),而不是编写一个4行循环。我知道我可以向LINQ提供一个lambda表达式,它将使用该表达式映射列表的元素,但是它会改变
列表所持有的类型吗

// 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], ...);
//我的对象列表
列出myDBDocs=。。。;
//它们是如何映射的
BsonDocument myDBDocAsBson=myDBDocs[0].ToBsonDocument();
//函数签名,它接受一个包含单独类型的列表
MyDocCollection.InsertManyAsync([IEnumerable documents],…);

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>
其他
LINQ
方法,如
First
Last
FirstOrDefault
除外
相交
不同
跳过
跳过
,等等。。。也不要更改数据类型。但是像
Select
SelectMany
这样的方法会更改数据类型

在您的情况下,如果只想从原始查询中过滤某些结果而不改变数据类型,请考虑使用<代码> < < /Cord>< /P>

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