首页 / .NET / 正文

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

4067 发布于: 2018-02-06 读完约需3分钟

问题描述

当前有一个集合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#程序开发中如何像SQL语句一样做left join和group by 以及count统计查询?

下一篇: [Linq].NET/C#程序开发中如何将Linq的查询结果转换成HashSet或者HashedSet?

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

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册