C# C LINQ-将IEnumerable与anonmyous列表进行比较?
基本问题: 我有: IEnumerable listA。 var listB这是由LINQ查询生成的anonmyous列表 我想查询包含listA的对象列表,查看它们是否与listB匹配: someObjectList.Wherex=>x.listA==listB 比较不起作用-那么如何确保两个列表的比较类型相同 详细问题: 我将一个较大的列表分组为包含名称和相关日期的子集C# C LINQ-将IEnumerable与anonmyous列表进行比较?,c#,linq,list,generics,ienumerable,C#,Linq,List,Generics,Ienumerable,基本问题: 我有: IEnumerable listA。 var listB这是由LINQ查询生成的anonmyous列表 我想查询包含listA的对象列表,查看它们是否与listB匹配: someObjectList.Wherex=>x.listA==listB 比较不起作用-那么如何确保两个列表的比较类型相同 详细问题: 我将一个较大的列表分组为包含名称和相关日期的子集 var listGroup = from n in list group n by new { n.NAME }
var listGroup = from n in list group n by new
{ n.NAME } into d
select new
{
NAME = d.Key.NAME, listOfDates = from x in d select new
{ Date = x.DATE } };
我有一个对象来保存值以供进一步处理:
class SomeObject
{
public SomeObject()
{
_listOfDates = new List<DateTime>();
}
private IENumerable<DateTime> _listOfDates;
public IENumerable<DateTime> ListOfDates
{
get {return _listOfDates;}
set {_listOfDates = value;}
}
}
问题在于,将x.ListOfDates与item.ListOfDates进行比较是行不通的。没有编译器错误,但我怀疑返回值列表不同。如何使列表变得通用,以便进行比较
更新1
这似乎可以将日期列表转换为类似的格式:
IENumberable<DateTime> tempList = item.listOfDates.Select(x => x.DATE).ToList()
然后,我按照@Matt Burland的“SequenceEqual”建议进行了操作。你可以将一个IEnumerable与另一个IEnumerable进行比较,你需要比较序列。幸运的是,静态方法和扩展方法的风格都可以在这里使用
比如:
var record = someObjectList
.Where(x => x.NAME == item.NAME && x.ListOfDates.SequenceEquals(item.listOfDates))
.SingleOrDefault();
我尝试了,但出现了以下错误:无法从“System.Collections.Generic.IEnumerable”转换为“System.Linq.ParallelQuery”
IENumberable<DateTime> tempList = item.listOfDates.Select(x => x.DATE).ToList()
var record = someObjectList
.Where(x => x.NAME == item.NAME && x.ListOfDates.SequenceEquals(item.listOfDates))
.SingleOrDefault();