1
的基本問題:C#LINQ - 比較IEnumerable <string>與匿名列表?
我:
- IEnumerable的listA的。
- VAR數組listB(這是由LINQ查詢生成的anonmyous列表)
我要查詢包含listA的對象列表,看看它們是否匹配到數組listB:
- someObjectList。其中(x => x.listA == listB)
比較不起作用 - 那麼如何確保兩個列表是相同類型的比較?
具體問題:
我分組更大的名單到包含名稱和相關的日期(S)的一個子集。
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不起作用。沒有編譯器錯誤,但我懷疑返回的值列表是不同的。如何讓列表通用以便可以進行比較?
UPDATE1
這似乎是工作,以獲得listOfDates成類似的格式:
IENumberable<DateTime> tempList = item.listOfDates.Select(x => x.DATE).ToList()
然後我跟着從@馬特Burland的「SequenceEqual的建議,
我試過,但得到這個錯誤:無法從 'System.Collections.Generic.IEnumerable' 轉換爲「System.Linq.ParallelQuery –