[英]Convert foreach loop with repeater in linq
如何在LINQ中轉換以下代碼
foreach (RepeaterItem ri in rptNews.Items)
{
HiddenField hdnUserId = (HiddenField)ri.FindControl("hdnId");
int userId = Users.Current.UserId;
if (Convert.ToInt32(hdnUserId.Value) != userId)
{
((ImageButton)ri.FindControl("img1")).Visible = false;
((ImageButton)ri.FindControl("img2")).Visible = false;
}
}
另外,請指導我如何學習將此類代碼轉換為linq。
Linq旨在選擇一個數據子集,而不僅僅是在集合上進行迭代。 在您的示例中,您什么都沒有選擇,只是在一個集合中循環。 Linq不是您要實現的正確工具。
關於您的Linq 更快的評論,一旦編譯器發揮了魔力,linq查詢最終將歸結為一系列for
和if
語句,因此我懷疑它會比您foreach
更快,即使您可以在不使用a的情況下使用它select
子句。
在學習LINQ時,我發現MSDN上的101 LINQ Samples指南非常有用。
看一下示例,然后親自重寫上面的查詢-這是學習的唯一方法。
既然您要求它,請在下面找到它:
foreach (RepeaterItem ri in from RepeaterItem ri in rptNews.Items let hdnUserId = (HiddenField)ri.FindControl("hdnId") let userId = Users.Current.UserId where Convert.ToInt32(hdnUserId.Value) != userId select ri)
{
((ImageButton)ri.FindControl("img1")).Visible = false;
((ImageButton)ri.FindControl("img2")).Visible = false;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.