我有這樣的LINQ查詢(如果它的正確不知道),但我要的是:的LINQ - 優化/糾正我的查詢
把我的所有公司的辦事處(即涉及到我的公司如companyid == mycompanyid ) 已宣佈他們有郵政編碼「cv」,只返回辦公室。 (代碼清晰)
var offices = from office in _readOnlySession.All<Office>()
.GetMyOffices(_userSession) //filter out my offices using extension method
let postcodes = _readOnlySession.All<OfficePostCode>().Where(x => x.OfficeID == office.OfficeID)
.Join(_readOnlySession.All<PostCodeDistrict>().Where(r=> r.Region.ToLower().StartsWith("cv".ToLower())),
x => x.PostCodeID,
y => y.PostCodeID,
(x, y) => new { Region = y.Region })
where postcodes.Any()
select new { office.OfficeID, office.Name };
問題:我怎樣才能使這一切的查詢方法,更優化/正確的查詢方法?
注:「CV」將是傳遞給方法的變量 - 還挺硬編碼來說明我的例子
更新:
IQueryable<T> All<T>() where T : class, new();
public IQueryable<T> All<T>() where T : class, new()
{
return GetTable<T>().AsQueryable();
}
不。所有採取Func鍵作爲參數,並返回一個布爾值,而不是一個枚舉?它看起來不像代碼會編譯。 –
Bodrick
2012-01-31 12:06:06
@博德里克 - 它編譯和工作! – Haroon 2012-01-31 12:06:55
我想你在那裏使用一些擴展方法。什麼類型是_readOnlySession?是否。所有()只返回給定類型集合中的所有對象? –
Bodrick
2012-01-31 12:11:09