[英]Passing a function to the Contains Linq method
為什么當我包含Where()方法時,以下代碼為何起作用,而更通用的示例失敗?
// *** WORKS ***
private IEnumerable<int> _MySelectedData;
public void method()
{
IEnumerable<int> distinctData = GetData(m => m.ModelID);
}
public IEnumerable<int> GetData(Func<Model, int> selectParam)
{
return _MyData
.Where(m => _MySelectedData.Contains(m.ManufacturerID))
.Select(selectParam).Distinct();
}
// *** FAILS ***
private IEnumerable<int> _MySelectedManufacturers;
public void method()
{
IEnumerable<int> distinctData = GetData(_MySelectedManufacturers, m => m.ManufacturerID, m => m.ModelID);
}
public IEnumerable<int> GetData(IEnumerable<int> _MySelectedData, Func<Model, int> whereParam, Func<Model, int> selectParam)
{
return _MyData
.Where(m => _MySelectedData.Contains(whereParam))
.Select(selectParam).Distinct();
}
我收到以下錯誤:
'IEnumerable'不包含'Contains'的定義和最佳擴展方法重載'Queryable.Contains ...
錯誤發生在此行:
.Where(m => _MySelectedData.Contains(whereParam))
希望有人能以我的方式突出錯誤!
Contains
將值作為參數,但是您要向其傳遞一個函數 。 我懷疑您只是想針對“當前”項評估函數:
.Where(m => _MySelectedData.Contains(whereParam(m)))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.