C# 使用linq将值与列表区分开来
我有一个对象列表,根据数组,我希望从中获得另一个不同值的列表 用一个例子来解释我的问题 原始列表C# 使用linq将值与列表区分开来,c#,linq,C#,Linq,我有一个对象列表,根据数组,我希望从中获得另一个不同值的列表 用一个例子来解释我的问题 原始列表 // Class of the object class Obj { public string Name { get; set; } public string Surname { get; set; } public string Address { get; set; } } // List of the object List<Obj> objects
// Class of the object
class Obj
{
public string Name { get; set; }
public string Surname { get; set; }
public string Address { get; set; }
}
// List of the object
List<Obj> objects = new List<Obj>();
//Values in the list
Obj a = new Obj();
a.Name = "Jack";
a.Surname = "Grey";
a.Address = "Sheffield";
objects.Add(a);
Obj b = new Obj();
b.Name = "John";
b.Surname = "Grey";
b.Address = "Sheffield";
objects.Add(b);
Obj c = new Obj();
c.Name = "Jack";
c.Surname = "Grey";
c.Address = "London";
objects.Add(c);
我怎么能做这样的事?基本上,我们有另一个列表,其中包含与数组不同的列
List<Obj> NewList = objects.GroupBy( what to put here ).Select(x => x.First()).ToList();
List NewList=objects.GroupBy(放在这里的内容)。选择(x=>x.First()).ToList();
我的新列表将包含a和b的对象您可以使用
System.Linq.Dynamic
实现它,如下所示:
Dump
调用替换为Console.WriteLine
):
string[]ColArray=新字符串[]{“Name”,“姓氏”};
string groupingString=“new(“+string.Join(“,”,ColArray)+”);
var groupedObjectData=objects.GroupBy(groupingString,“it”);
foreach(groupedObjectData中的iGroup对象组)
{
选择(x=>x.Dump();
}
要点:
动态类
,分组值是对象类
类型是否要区分对象值?是,我希望根据列值区分对象。列在arrayDistinct中定义,在什么列上,名称字段aloneCheck No-数组中定义的所有列。数组值是在运行时定义的。
List<Obj> NewList = objects.GroupBy( what to put here ).Select(x => x.First()).ToList();
string[] ColArray = new string[] {"Name","Surname"};
string groupingString = "new(" + string.Join(",",ColArray) + ")";
var groupedObjectData = objects.GroupBy(groupingString,"it");
foreach (IGrouping<DynamicClass, Obj> objGroup in groupedObjectData)
{
objGroup.Select(x => x).Dump();
}