Если UniqueId является единственной имеющейся у вас информацией, вам нужно создать SPSiteDataQuery
для получения URL-адреса документа:
SPWeb web = // ...
SPSiteDataQuery q = new SPSiteDataQuery();
q.Query = String.Format(
"<Where><Eq><FieldRef Name='UniqueId' /><Value Type='Lookup'>{0}</Value></Eq></Where>",
spGuid);
q.Lists = "<Lists BaseType="1" />"; // restrict to document libraries
q.RowLimit = 1;
// q.Webs = "<Webs Scope='SiteCollection' />"; add to broaden the search on the whole site collection
q.ViewFields = "<FieldRef Name='EncodedAbsUrl' />";
DataTable tbl = web.GetSiteData(q);
if (tbl.Rows.Count == 0) throw new FileNotFoundException(...);
return tbl.Rows[0]["EncodedAbsUrl"];
Затем вы можете загрузить SPFile
(документ) с SPWeb.GetFile(string)
.Если вам нужен SPListItem
, вы можете получить к нему доступ через SPFile.Item
.