我真的需要foreach循环吗?! (可能过度杀戮)

时间:2010-12-10 18:58:19

标签: sharepoint loops foreach

我需要获取项目的GUID。我知道SiteURL,列表名称和项目名称。如何在list.items中使用splistitem li并且遍历每个项目(如果li.name == myitemname然后分配strguid = li.uniqueid.tostring()

有没有办法不使用foreach循环,因为我知道项目的名称?这将节省循环项目的时间。

4 个答案:

答案 0 :(得分:1)

如果要在splistcollection中的唯一项目上创建spquery,则只返回一个元素,您可以在没有foreach的情况下获取该元素

答案 1 :(得分:0)

 using (SPSite site = new SPSite(SiteURL))
            {
                using (SPWeb web = site.OpenWeb())
                {
                    SPList apps = web.GetList(web.Url + "/Lists/MyList");
                    SPQuery query = new SPQuery();
                    query.Query = String.Format("<Where><Eq><FieldRef Name='Title' /><Value Type='String'>{0}</Value></Eq></Where>", _title);
                    items = apps.GetItems(query);
                    if(items.Count > 0)
                       {
                         Guid id = items[0].UniqueId;
                       }
                }
            }

答案 2 :(得分:0)

可以工作,但我有11个文件,它们都有相同的文件名“license.txt”,它们位于同一个文档库中。 1个文件“license.txt”位于根文档库下,其他10个位于文档库中的10个不同文件夹中。那么如果我正在寻找Demo文件夹中的license.txt文件呢?

此代码有效但只能在根目录下找到license.txt。 private void btnGetFileGuid_Click(object sender, EventArgs e) { using (SPSite site = new SPSite("https://www.abc.com/sites/Software")) { using (SPWeb web = site.OpenWeb()) { SPList spList = web.Lists["Auto Cad"]; string fileName = "license.txt"; SPQuery query = new SPQuery(); query.Query="<Where><Eq><FieldRef Name='FileLeafRef' /><Value Type='Text'>" + fileName + "</Value></Eq></Where>"; SPListItemCollection items = spList.GetItems(query); if (items.Count > 0) { Guid id = items[0].UniqueId; lblGuid.Text = id.ToString(); } } } }

答案 3 :(得分:0)

尝试以下操作似乎正在发挥作用。

query.ViewAttributes = "Scope=\"Recursive\""; 

query.ViewAttributes = "Scope='RecursiveAll'";