Осталось объединить 2 таблицы данных, где содержится - PullRequest
0 голосов
/ 02 октября 2019

У меня есть 2 таблицы данных A и B со следующей схемой.

A: Id (Example value: 881)
A: Price 
A: Category
A: Type (Example value: Single/Double)

B: Applicable Ids (Example value: 123,881,341 *note that they are concatenated Ids)
B: Category
B: Price (Example value: $21)

Я пытаюсь выполнить левое соединение LINQ, чтобы заполнить A.Price значением B.Price, где A.Type«Одиночные» и B. Применимые идентификаторы содержат A.Id. Наконец, если не найден, установите значение по умолчанию 0.

Я создал класс FinalObject, поскольку из того, что я прочитал, он не может быть анонимным. Но в то же время я не уверен, как включить условие «Где содержать» и выбрать все поля из A.

List<FinalObject> Repository =
    (from ARecord in A.AsEnumerable()
     join BRecord in B.AsEnumerable()
     on ARecord["Category"] equals BRecord["Category"] into grp
     from Sgrp in grp.Where(f => f.Field<string>("Applicable Ids").ToString().Contains(ARecord["Id"].ToString())
 && (A["Type"].ToString().ToUpper() == "SINGLE")).DefaultIfEmpty()
     select new FinalObject
     {
      .....
    }).ToList();

Я должен ожидать, что количество возвращаемых записей будет похоже на A, но послевыполняя соединение LINQ, я получил меньше записей.

Пожалуйста, сообщите, если какой-либо синтаксис неправильный, и запрос не позаботился о "не найден, установите значение по умолчанию 0". еще.

...