Microsoft.SharePoint.Client (CSOM) - это библиотека, которая может удаленно подключаться к средам SharePoint. Таким образом, вы можете легко установить соединение с одним списком, собрать данные, а затем открыть новый контекст во вторую среду и скопировать эти данные.
string url = first.site;
string url2 = second.site;
using (ClientContext context = new ClientContext(url))
{
//GetListItems();
using (ClientContext context2 = new ClientContext(url2))
{
//AddListItems();
}
}
Вы можете сделать это как приемник событий, запланированное задание, что угодно.
Вы можете вызвать List.Fields, чтобы получить список всех полей в элементе. Таким образом, вы можете сравнить имена столбцов между двумя списками, чтобы выяснить, какие метаданные будут копироваться. Вот очень неполный пример, иллюстрирующий идею.
using (ClientContext context = new ClientContext(url))
{
List list = context.Web.Lists.GetByTitle("Project Notes Test");
FieldCollection fields = list.Fields;
context.Load(fields);
context.ExecuteQuery();
using (ClientContext target = new ClientContext(url2))
{
List list2 = target.Web.Lists.GetByTitle("Other List");
FieldCollection fields2 = list2.Fields;
target.Load(fields2);
target.ExecuteQuery();
foreach (Field field in fields)
{
foreach(Field field2 in fields2)
{
if(field.Title == field2.Title)
{
listItem1[field.StaticName] = listItem2[field.StaticName];
}
}
}
}
}
Вы можете сделать это, но если вы проверить мой ответ я обновил его, чтобы показать, как можно сравнить столбцы в одном списке другой динамически. Это предполагает, что список A разделяет имена столбцов и типы со списком B, если они этого не делают, вам нужно будет очень креативно сопоставить данные. –