问题描述
当前有一个集合List<T>
,每个集合元素包含一个Id
属性,现在的需求是将这个集合List<T>
中的每一个元素的Id
值提取出来,并使用连接符号连接成一个字符串,实体类如:
public class MyClass
{
public int Id { get; set; }
}
比如,这里的MyClass
集合List<MyClass>
,使用Linq
如何能返回一个Id
的集合IEnumerable<int>
。
我们以前在.NET/C#程序开发中的做法可能是去循环这个List<T>
集合,然后使用一个字符串变量来保存每一个集合元素的Id
值,最后接连在一起,如:
var str="";
for(var i=0;i<list.Count;i++){
str+=list[i].Id + ",";
}
//去掉 str 的最后一个连接符(,)
这样来做是可以实现,没有任何问题,但是不够简洁,开发效率太低。如果还要将这些属性的值去重呢,就更复杂了。
我们其实可以使用Linq
来快速实现以上功能需求。
那么,在.NET/C#的程序开发中,如何使用Linq从这个集合List<T>中提取Id
属性的值并连接成一个字符串呢?
方案一
使用Linq
的Select(...)
方法
IEnumerable<int> ids = list.Select(x=>x.ID).Distinct();
方案二
使用Linq
的查询表达式来实现,如:
var idList = (from x in yourList select x.ID).Distinct();
方案三
int[] numbers = {1,2,3,4,5,3,6,4,7,8,9,1,0 };
var nonRepeats = (from n in numbers select n).Distinct();
foreach (var d in nonRepeats)
{
Console.Write(d);
}
输出:1234567890
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册