[Linq].NET/C#程序开发中使用Linq如何从一个集合List<T>中提取一个属性的惟一值并连接成一个字符串?

.NET 作者: Rector 125阅读 0评论 0收藏 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

问题描述

当前有一个集合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属性的值并连接成一个字符串呢?

方案一

使用LinqSelect(...)方法

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

阅读了该文章的人还浏览了...

本文永久链接图享网 » [Linq].NET/C#程序开发中使用Linq如何从一个集合List<T>中提取一个属性的惟一值并连接成一个字符串?

发布于: 2018-02-06 10:34:31
分享扩散:

文章评论

获取验证码