我有兩個IEnumerable的通過Lambda方式填充ToDictionary()方法中的值字段?
IEnumerable<MyObject> allowedObjects = MyService.GetAllowedObjects();
IEnumerable<MyOBject> preferedObjects = MyService.GetPreferedObjects();
我們可以有把握地認爲preferedObjects永遠是allowedObjects的一個子集。
我想創建一個IDictionary<MyObject, bool>
。如果MyObject實例也位於preferredredObjects枚舉中,則該對象的關鍵是來自allowedObjects和bool的MyObjects集合。
我可以列舉他們通過一個添加它們這樣做,但我希望能夠做這樣的事情:
IDictionary<MyObject, bool> selectedObjects = allowedObjects
.ToDictionary(o => new KeyValuePair<MyObject, bool>()
{ Key = q,
Value = preferedObjects.Any(q)
}
);
UPDATE
交換了任何包含; 該建議最該解決方案是我第一次嘗試,但不接受某些原因:
IDictionary<MyObject, bool> selectedObjects = allowedObjects
.ToDictionary<MyObject, bool>(o => o, preferedObjects.Any(o));
Visual Studio中說,第一種方法不返回布爾。這是真的,但主要是因爲一個布爾不會是正確的結果開始...
然後它說它不能infere第二lambda的類型...
正如你可以看到我試圖明確定義類型來幫助推斷,但它並不能解決一件事情。
建議?
免責聲明:名稱和代碼snippyfied,以保持它應該是
您沒有將第二個參數定義爲lambda表達式!在`preferedObjects.Any(o)`之前加入`o =>`位,它應該可以正常工作(不需要指定泛型類型或使用`Any`而不是`Contains`)。 – Noldorin 2009-05-25 09:40:00