【发布时间】:2015-12-21 20:26:26
【问题描述】:
基本问题:
我有:
- IEnumerable listA.
- var listB(这是一个由 LINQ 查询生成的匿名列表)
我想查询一个包含 listA 的对象列表,看看它们是否与 listB 匹配:
- someObjectList.Where(x => x.listA == listB)
比较不起作用 - 那么如何确保两个列表的比较类型相同?
详细问题:
我将一个较大的列表分组到一个包含名称和相关日期的子集中。
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;}
}
}
然后我遍历 listGroup 并添加到 SomeObject 的通用列表:
foreach(var item in listGroup)
{
SomeObject so = new SomeObject();
...do some stuff
if(some match occurs then add into List<SomeObject>)
}
当我遍历时,我想检查现有列表是否匹配:
var record = someObjectList.Where(x => x.NAME == item.NAME && x.ListOfDates == item.listOfDates).SingleOrDefault();
问题在于将 x.ListOfDates 与 item.listOfDates 进行比较是行不通的。没有编译器错误,但我怀疑返回的值列表不同。如何让列表通用化以便进行比较?
更新1
这似乎可以将 listOfDates 转换为类似的格式:
IENumberable<DateTime> tempList = item.listOfDates.Select(x => x.DATE).ToList()
然后我遵循了@Matt Burland 的“SequenceEqual”建议
【问题讨论】:
标签: c# linq list generics ienumerable