我有一個屬性OnHomePage
這是一個布爾值。從linq查詢解析bool查詢
我想根據是否從linq查詢返回結果來設置此值。很明顯,我可以編寫一個外部方法來確定我的查詢結果是否爲null或者它是否包含值,但我希望有一個更好的方法可以在一行中完成。
這裏是我當前的代碼行,因爲它代表:
OnHomePage = im.PageImages.Select(p => p.ImageId == im.Id
&& p.Page.PageName == "/Home")
我有一個屬性OnHomePage
這是一個布爾值。從linq查詢解析bool查詢
我想根據是否從linq查詢返回結果來設置此值。很明顯,我可以編寫一個外部方法來確定我的查詢結果是否爲null或者它是否包含值,但我希望有一個更好的方法可以在一行中完成。
這裏是我當前的代碼行,因爲它代表:
OnHomePage = im.PageImages.Select(p => p.ImageId == im.Id
&& p.Page.PageName == "/Home")
您可以使用Any Extension Method,以確定是否查詢給出任何結果或不:
OnHomePage = im.PageImages.Any(p => p.ImageId == im.Id
&& p.Page.PageName == "/Home");
「Any」特別適合這種情況,因爲它短路,並且在找到匹配項時將停止迭代項目。 – bryanbcook
@bryanbcook:所以'.Where(..)。Any()'。 '.Any(..)'可能會導致更高效的SQL轉換,具體取決於LINQ提供程序。 – dtb
@bryanbcook這可能是一個IQueryable,而不是Enumerable,因此完全取決於查詢提供者。 – Servy
OnHomePage = im.PageImages.Where(p => p.ImageId ==
im.Id && p.Page.PageName == "/Home").Any();
大家沒有想到回答,你的布爾應該返回true,如果至少有一個是真的,或者所有的....? –
@RoyiNamir:我認爲這不公平。爲我自己說話,我確實留意*「是否從linq查詢返回結果。」*這是'Any'。 – Jon
@jon我的壞。沒有看到(除非快速編輯...) –