如何从对象列表中创建一个不同的整数列表
本文关键字:列表 一个 整数 对象 创建 | 更新日期: 2023-09-27 18:16:50
我有一个对象列表,每个对象都有属性total
。
我需要从上面的列表创建一个新的List<int>
。问题是,如果两个对象有total
=4, List<int>
应该只包含一个'4'。
让我的列表是:
[
{name: "vishnu" , total: 10},
{name: "vishnu2", total: 11},
{name: "vishnu3", total: 15},
{name: "vishnu4", total: 10}
]
所以在我的整数列表中输出应该是:
10、11、15
和非
10、11、15、10
using Linq:
myObjects.Select(obj => obj.total).Distinct().ToList()
为什么要在List<T>
中存储不同的项?这似乎是一个错误的集合类型。我建议使用HashSet<T>
,它是专门为:
https://msdn.microsoft.com/en-us/library/bb359438 (v = vs.110) . aspx
实现可以像
一样简单HashSet<int> result = new HashSet<int>(list.Select(item => item.total));
测试// 10, 11, 15
Console.Write(String.Join(", ", result));
如果你坚持List<int>
:
List<int> myList = result.ToList();
是这样的吗?
using System.Linq;
...
var list = new List <YourClass>();
...
var newList = list.Select(i => i.total).Distinct().ToList ();
你可以这样写:
var result = myInput.GroupBy(x => x.Total).Select(x => new
{
Total = x.Key,
Name = x.First().Name
});
创建一个匿名列表,其中每个元素都有一个Toal
和一个Name
属性。但是,如果组中有多个元素,则只考虑组中的第一个元素。
这个解决方案的优点是它保留了Name
-属性。如果您不需要这个,并且只对Total
感兴趣,那么其他人建议的Distinct
更容易。