我有這4個表: 幫助意想不到的LINQ查詢結果
這個查詢
var query = db.Authors
.Where(x=> x.ItemAuthors
.Any(z=> z.Item.CategoryItems
.Any(b=> b.categoryID == 10)))
.Select(ci=> new
{
authorText = string.Format("{0} ({1})", ci.text,
ci.ItemAuthors.Count()),
authorId = ci.authorID
});
其中填充的著者下拉列表預期其中工程。問題是,當我嘗試計算分配給每個作者的項目數時,它計數爲,作者在整個項目表中每有項。
因此,例如,如果作者總共有10本書,但在上述查詢中只有2本書出現,我仍然可以獲得10本書的計數。當我將相同的查詢綁定到控件時,我找回正確的數據,這只是計數操作無法正常工作。
重申我將它綁定到一個gridview,我只看到每個作者一本書,而不是作者寫的所有書。所以看起來我的查詢應該是正確的。
更新: @Jon Skeet,我無法使用let
運營商,因爲我有條件地構建我的查詢。我通過使用原始查詢獲取計數來解決我的問題。以下是我修改了原來的Count()
語法:
var query = authors2.Select(x => new
{
authorText = string.Format("{0} ({1})",x.text, x.ItemAuthors
.Where(qq=> qq.Item.CategoryItems
.Any(xt=> xt.categoryID == 10))
.Count()),
authorId = x.authorID
});
你沒有顯示你想要做計數的代碼...請顯示*不工作的代碼。 – 2011-04-12 06:38:43
這是在我選擇的新語句中,通過'authorText'你必須滾動。 – 2011-04-12 06:39:30
哎呀 - 我沒有看到它,因爲滾動。這是值得的格式,以便我們不必這樣做......現在回答。 – 2011-04-12 06:41:03