LINQ для sharepoint . справка по списку соединений

#linq #sharepoint-2010 #linq-to-entities

#linq #sharepoint-2010 #linq-to-entities

Вопрос:

В настоящее время я использую SharePoint 2010, и на своем бизнес-уровне я использую LINQ для SharePoint. Я сгенерировал все свои классы сущностей с помощью SPMetal.

Мы создаем библиотечную систему, в моей системе есть 2 списка. Первый — это вклад, а второй — участник. Каждый участник содержит ссылку на список участников (первичная ссылка ISBN). Список материалов содержит список книг, и PrimaryISBN не является уникальным в этом списке.

Вклад

 ID  PrimaryISBN      TITLE      
1   PRIM1            HardcoverLOTR      
2   PRIM1            AudioBookLOTR      
3   PRIM2            HardcoverHP        
  

Участник

 ID  Name  PrimaryISBNLookup
1   ABC   PRIM1
2   DEF   PRIM2
  

В настоящее время я пытаюсь получить все книги, предоставленные конкретным пользователем, на основе имени.
Мой запрос выглядит примерно так

 var result = from _contributor in data.contributor
             where _contributor.Name= "ABC"
             select new Book
            {
               Title = contributor.PrimaryISBNLookup.Title
            }
  

Проблема, с которой я в настоящее время сталкиваюсь, заключается в извлечении записей с одинаковым ISBN, но разным названием (У каждого формата будет название, т. Е. у аудиокниги будет название, а у той же книги в твердом переплете будет другое название).
Этот запрос возвращает мне только 1 запись, хотя я думал, что в моей системе есть 2 записи, т. Е. запись с идентификатором (во вкладе), которую я вынужден вставить во время вставки записи в список участников.

Мы высоко ценим вашу помощь.

Ответ №1:

Насколько я понимаю, вы пытаетесь реализовать простое объединение, например, так:

 var results = from _contributor in data.contributor
              join _contribution in data.contribution
              on _contributor.PrimaryISBNLookup equals _contribution.PrimaryISBN
              where _contributor.Name == "ABC"
              select new Book
              {
                  Title = _contribution.Title
              }
  

Ответ №2:

Если вы хотите использовать DataTable в SPList, попробуйте это:

            SPList  cList = spWeb.Lists.TryGetList("Customer");
           SPList   oList = spWeb.Lists.TryGetList("Order");


            DataTable cTable= cList.Items.GetDataTable();
            DataTable oTable= oList.Items.GetDataTable();

            var coList = from tbl1 in cTable.AsEnumerable()
                         join tbl2 in oTable.AsEnumerable() on tbl1["Title"] equals           tbl2["CustomerName"]
                         select new
                         {
                             ItemName = tbl2["Title"],
                             CustomerName = tbl1["Title"],
                             Mobile = tbl1["MobileNo"]

                         };