LINQ, чтобы поделиться. присоединиться к списку помощи - PullRequest
3 голосов
/ 07 мая 2011

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

Мы создаем библиотечную систему, в моей системе 2 списка.Первый - это вклад, а второй - вкладчик.Каждый участник содержит ссылку на список вкладов (ссылка PrimaryISBN).Список взносов содержит список книг, и 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 записи, то есть запись с идентификатором (в Contribution), которую я вынужден вставить во время вставки записи в список участников.

Ваша помощь чрезвычайнооценили.

Ответы [ 2 ]

1 голос
/ 07 мая 2011

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

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
              }
0 голосов
/ 08 июня 2013

Если вы хотите использовать 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"]

                         };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...