Создание LINQ выбирает из нескольких таблиц

«Исправить» следует добавить это в config.ini в разделе [pgbouncer]:

ignore_startup_parameters = extra_float_digits

Подробности здесь: https://github.com/Athou/commafeed / вопросы / 559

52
задан ScottG 3 August 2017 в 13:17
поделиться

4 ответа

Можно использовать анонимные типы для этого, т.е.:

var pageObject = (from op in db.ObjectPermissions
                  join pg in db.Pages on op.ObjectPermissionName equals page.PageName
                  where pg.PageID == page.PageID
                  select new { pg, op }).SingleOrDefault();

Это превратит pageObject в IEnumerable анонимного типа так AFAIK, Вы не будете в состоянии раздать его к другим методам, однако при простом получении данных для игры с в методе, Вы в настоящее время находитесь в, он прекрасно подходит. Можно также назвать свойства в анонимном типе, т.е..:-

var pageObject = (from op in db.ObjectPermissions
                  join pg in db.Pages on op.ObjectPermissionName equals page.PageName
                  where pg.PageID == page.PageID
                  select new
                  {
                      PermissionName = pg, 
                      ObjectPermission = op
                  }).SingleOrDefault();

, который Это включит Вам к say:-

if (pageObject.PermissionName.FooBar == "golden goose") Application.Exit();

, Например:-)

85
ответ дан abatishchev 7 November 2019 в 09:21
поделиться

Если Вы не хотите использовать анонимные типы b/c скажем, Вы передаете объект другому методу, можно использовать опцию загрузки LoadWith для данных, связанных с загрузкой. Это требует, чтобы Ваши таблицы были связаны или через внешние ключи или в Вашей модели Linq к SQL dbml.

db.DeferredLoadingEnabled = false;
DataLoadOptions dlo = new DataLoadOptions();
dlo.LoadWith<ObjectPermissions>(op => op.Pages)
db.LoadOptions = dlo;

var pageObject = from op in db.ObjectPermissions
         select op;

// no join needed

Тогда можно звонить

pageObject.Pages.PageID

В зависимости от того, на что похожи данные, Вы, вероятно, хотели бы сделать это наоборот,

DataLoadOptions dlo = new DataLoadOptions();
dlo.LoadWith<Pages>(p => p.ObjectPermissions)
db.LoadOptions = dlo;

var pageObject = from p in db.Pages
                 select p;

// no join needed

var objectPermissionName = pageObject.ObjectPermissions.ObjectPermissionName;
7
ответ дан Codewerks 7 November 2019 в 09:21
поделиться

Необходимо создать новый анонимный тип:

 select new { op, pg }

Относятся к чиновнику руководство .

3
ответ дан Konrad Rudolph 7 November 2019 в 09:21
поделиться

изменение

select op) 

к

select new { op, pg })
1
ответ дан aku 7 November 2019 в 09:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: