Sharepoint 是否有任何方法可以在没有try/catch块的情况下检查SPList或splistem的存在?

Sharepoint 是否有任何方法可以在没有try/catch块的情况下检查SPList或splistem的存在?,sharepoint,sharepoint-2007,Sharepoint,Sharepoint 2007,在SharePoint中,我希望能够在对某个特定列表或列表项执行操作之前检查该列表或列表项是否存在,但似乎没有一种方法可以在不捕获异常的情况下执行此操作。当然有更好的方法吗?要找到SPList的实例,您可以使用linq解决方案: SPList instance = (from SPList list in web.Lists where list.RootFolder.Name.Equals(name) sele

在SharePoint中,我希望能够在对某个特定列表或列表项执行操作之前检查该列表或列表项是否存在,但似乎没有一种方法可以在不捕获异常的情况下执行此操作。当然有更好的方法吗?

要找到SPList的实例,您可以使用linq解决方案:

SPList instance = (from SPList list in web.Lists   
                   where list.RootFolder.Name.Equals(name) 
                   select list).FirstOrDefault();   

if (instance != null)   
{
...// process
对于查找SPListItem的实例,也可以使用类似的解决方案

FirstOrDefault就是诀窍。默认值为null(不是异常)

更新:

作为注释,这行代码:

from SPList list in web.Lists
和写作一样

from list in web.List.Cast<SPList>
来自web.list.Cast中的列表

要查找SPList的实例,可以使用linq解决方案:

SPList instance = (from SPList list in web.Lists   
                   where list.RootFolder.Name.Equals(name) 
                   select list).FirstOrDefault();   

if (instance != null)   
{
...// process
对于查找SPListItem的实例,也可以使用类似的解决方案

FirstOrDefault就是诀窍。默认值为null(不是异常)

更新:

作为注释,这行代码:

from SPList list in web.Lists
和写作一样

from list in web.List.Cast<SPList>
来自web.list.Cast中的列表

您能举一个例子,说明您不确定是否存在列表项吗?我只能想到从SPListItemCollection中检索SPListItem的情况。。。在SPList的例子中,它是基本的错误处理(一个列表可能会被无意中删除,我们正在阻止客户端攻击自己的脚)。至于SPListItem,该过程是这样的,即可以对一个项目进行一些处理,而另一个用户有充分的理由可以删除该项目。您能否举一个例子,说明您不确定是否存在ListItem?我只能想到从SPListItemCollection中检索SPListItem的情况。。。在SPList的例子中,它是基本的错误处理(一个列表可能会被无意中删除,我们正在阻止客户端攻击自己的脚)。至于SPListItem,该过程是这样的,即可以对另一个用户删除的项目进行某些处理。web.List(SPListCollection)不是IEnumerable,因此上面的代码将无法正常工作。“从web.Lists.Cast()中的SPList列表,其中…”将起作用。你能更新你的答案,包括这个,然后我将它标记为接受的解决方案吗?谢谢我的经验是,“web.list中的fromsplistlist”代码与编写“web.list.Cast中的fromsplist”代码相同。当您像这样显式地包含类型(SPList)时,会在后台调用Cast,这确实需要进行,因为SPListCollection没有实现您所说的IEnumerable。话虽如此,如果您枚举的集合确实实现了IEnumerable,那么您就不应该包含该类型,因为这样您就不需要或不想调用CastJust来确认-然后该行应该读取(来自web.Lists.Cast()中的list where…)?这无关紧要。该行与从web.Lists中的SPList列表中写入相同。它将(可能是编译器的东西)转换为web.Lists.Cast中的from列表,然后再转换为lambdaexpressionweb.Lists(一个SPListCollection)不是IEnumerable,因此上面的代码将无法正常工作。“从web.Lists.Cast()中的SPList列表,其中…”将起作用。你能更新你的答案,包括这个,然后我将它标记为接受的解决方案吗?谢谢我的经验是,“web.list中的fromsplistlist”代码与编写“web.list.Cast中的fromsplist”代码相同。当您像这样显式地包含类型(SPList)时,会在后台调用Cast,这确实需要进行,因为SPListCollection没有实现您所说的IEnumerable。话虽如此,如果您枚举的集合确实实现了IEnumerable,那么您就不应该包含该类型,因为这样您就不需要或不想调用CastJust来确认-然后该行应该读取(来自web.Lists.Cast()中的list where…)?这无关紧要。该行与从web.Lists中的SPList列表中写入相同。它将(可能是编译器的东西)转换为web.Lists.Cast…中的from列表,然后转换为lambdaexpression