Sharepoint 在使用GETITEMBYID()之前检查异常

Sharepoint 在使用GETITEMBYID()之前检查异常,sharepoint,Sharepoint,我正在通过Getitembyid获取项…但我想在使用它之前检查项是否存在…我不想使用查询作为使用Getitembyid的主要目的是提高性能…知道如何实现这一点吗 itemid = Response.QueryString["loc"]; SPList mylist = myweb.GetList(SPUrlUtility.CombineUrl(myweb.ServerRelativeUrl, "/Lists/Location")); //现在id itemid不存在,它抛出异常…所以我

我正在通过Getitembyid获取项…但我想在使用它之前检查项是否存在…我不想使用查询作为使用Getitembyid的主要目的是提高性能…知道如何实现这一点吗

itemid = Response.QueryString["loc"];
    SPList mylist = myweb.GetList(SPUrlUtility.CombineUrl(myweb.ServerRelativeUrl, "/Lists/Location"));
//现在id itemid不存在,它抛出异常…所以我想在使用下面的语句之前检查itemid是否存在…我知道我可以检查throw SPQuery,但正如我上面所说的,因为性能问题,我只使用itemid

  SPListItem myitem = mylist.GetItemById(Convert.ToInt32(itemid));

您知道如何实现这一点吗?

SPQuery绝不会让您的代码变慢,事实上,其他每一篇SharePoint文章都会建议您使用SPQuery来提高性能。为了让GetItemByID在内部更有趣,请使用SPQuery将项目取回给您,下面是从GetItemByID函数中提取的部分代码

  SPQuery query = new SPQuery();
  query.Query = "<Where><Eq><FieldRef Name=\"ID\"></FieldRef><Value Type=\"Integer\">" + id.ToString(CultureInfo.InvariantCulture) + "</Value></Eq></Where>";
SPQuery query=new SPQuery();
query.query=”“+id.ToString(CultureInfo.InvariantCulture)+”;
这里需要注意的重要一点是,SPQuery有一个名为SingleItemId的内部属性,该属性获取要获取的项Id的Id,当调用最终到达COM对象时,无法找到对其使用方式的进一步跟踪

据说你有两个选择 备选案文1:

将GetItemByID代码包装在catch块中并检查是否存在异常,如果出现异常,可以标记一个标志来指示该项Id无效并对其采取措施


选项2:使用SPQuery,您可以测试时间差GetItemByID&使用SPQuery,您将看到没有,而且只有很少的时间差。

SPQuery绝不会让您的代码变慢,事实上,网络上的每一篇SharePoint文章都建议您使用SPQuery来提高性能。为了让GetItemByID在内部更有趣,请使用SPQuery将项目取回给您,下面是从GetItemByID函数中提取的部分代码

  SPQuery query = new SPQuery();
  query.Query = "<Where><Eq><FieldRef Name=\"ID\"></FieldRef><Value Type=\"Integer\">" + id.ToString(CultureInfo.InvariantCulture) + "</Value></Eq></Where>";
SPQuery query=new SPQuery();
query.query=”“+id.ToString(CultureInfo.InvariantCulture)+”;
这里需要注意的重要一点是,SPQuery有一个名为SingleItemId的内部属性,该属性获取要获取的项Id的Id,当调用最终到达COM对象时,无法找到对其使用方式的进一步跟踪

据说你有两个选择 备选案文1:

将GetItemByID代码包装在catch块中并检查是否存在异常,如果出现异常,可以标记一个标志来指示该项Id无效并对其采取措施

选项2:使用SPQuery,您可以测试时间差GetItemByID&使用SPQuery,您将看到没有时间差,只有很少的时间差