我有List<MyClass>
和MyClass
定义为
class MyClass
{
public string ID{get; set;};
public string Name{get; set;};
}
现在我想从我拥有的MyClass对象列表中单独收集所有ID,并将其转换为字符串[]。
如何做到这一点?
我不熟悉LINQ。这就是我要问的原因。
我不知道该说什么,但是downvotes让我真的看看LINQ和投影,所以感谢分享这些信息。
答案 0 :(得分:10)
在LINQ中使用投影:
var ids = myClassList.Select(myClass => myClass.ID).ToArray();
在using System.Linq;
下
Select
extension method允许您将类型“投射”为其他类型(包括匿名类型)。使用编译器中的新类型推断机制,您甚至不需要为Select
指定通用参数。
在这种情况下,Select
将返回IEnumerable<string>
。
ToArray
按照说法在锡上执行,将IEnumerable<T>
转换为T[]
。
投影只是subset of Linq methods的精彩术语,工作由您自己的代码完成(在上面的例子中,这是lambda表达式:myClass => myClass.ID
)。 Select
方法需要Func<TSource, TResult>
,无论您的代码返回的是TResult
成为什么,在这种情况下,我们会返回string
属性MyClass
,所以你获得string
。
答案 1 :(得分:1)
使用select
扩展方法进行简单的LINQ查询:
List<MyClass> collection = new List<MyClass>() {new MyClass(), new MyClass()};
string[] result = collection.Select(b => b.ID).ToArray();
答案 2 :(得分:1)
List<MyClass> list = new List<MyClass>();
var idArray = list.Select(x => x.Id).ToArray();