Три таблицы необходимы для объединения.Синтаксис метода LINQ для множественного левого соединения
Table [Package]
ID (int)
ContainerID (int)
Code (string)
Code2 (string)
Table [UserHasPackages]
UserID (Comes from Identity tables) (string)
PackageID (int)
Table [Container]
ID (int)
Name (string)
Description (string)
в ViewModel, который представляет собой объект, я хотел бы показать, на мой взгляд:
public class CustomViewModel
{
public int ID { get; set; }
public string Name { get; set; } // Container.Name
public string Code { get; set; } // Package.Code
public string Code2 { get; set; } // Package.Code2
}
Но у меня возникают проблемы, делая объединение:
List<CustomViewModel> list = new List<CustomViewModel>();
list = context.Packages.Join(
context.Containers,
p => p.ContainerID,
c => c.ID,
(p, c) => new { p, c})
.Join( //error is here
context.UserHasPackages,
a => a.p.ID,
b => b.ApplicationUserId,
(a, b) => new { a, b })
.Select(f => new CustomViewModel
{
ID = f.p.ID,
Name = f.c.Name,
Code = f.p.Code,
Code2 = f.p.Code2
}).ToList();
Type arguments for method cannot be inherited from the usage. Try specifying the type arguments explicitly.
Есть другой способ сделать два объединения (как описано), это более правильный способ?
РЕШЕНИЕ синтаксис на основе
Метод является непроходной здесь, должен был пойти с синтаксисом запросов:
var query = (from package in context.Packages
join container in context.Containers on package.ContainerID equals container.ID
join userHasPackage in context.UserHasPackages on package.ID equals userHasPackage.PackageID
where userHasPackage.UserID == "SomeUser"
select new CustomViewModel
{
ID = package.ID,
Name = container.Name,
Code = package.Code,
Code2 = package.Code2
}).ToList();
Используйте запрос синтаксиса на основе? – MarcinJuraszek