簡體   English   中英

在linq中使用轉發器轉換foreach循環

[英]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查詢最終將歸結為一系列forif語句,因此我懷疑它會比您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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM