2016-12-06 2 views
0

Ниже мой LINQКак получить имя документа в этом LINQ?

IQueryable<DocumentMapper> query = (from c in entities.tTOCStructures 
                join e in entities.tUsers on c.CreatedBy equals e.UserUID 
                group c by c.FolderID into docs 
                where documentIds.Contains(docs.Key) 
                select new DocumentMapper() 
                { 
                 //DocumentName = Document Name 
                 //Owner = e.FirstName + " " + e.LastName, 
                 Editors = (from f in entities.tUsers join g in entities.tCheckoutViewUsers on f.UserUID equals g.ViewUserid where g.IsEditor == true && documentIds.Contains(g.DocumentID) select (f.FirstName + " " + f.LastName)), 
                 Approvers = (from f in entities.tUsers join g in entities.tCheckoutViewUsers on f.UserUID equals g.ViewUserid where g.IsApprover == true && documentIds.Contains(g.DocumentID) select (f.FirstName + " " + f.LastName)), 
                 Reviewers = (from f in entities.tUsers join g in entities.tCheckoutViewUsers on f.UserUID equals g.ViewUserid where g.IsReviewer == true && documentIds.Contains(g.DocumentID) select (f.FirstName + " " + f.LastName)) 
                }); 
       documents = query.ToList<DocumentMapper>(); 

Как получить имя документа & Владелец в приведенном выше LINQ.

Отношение, как показано ниже: -

Один документа будет иметь один документ Имя & Владельца, но несколько редакторов, утверждают Рецензент.

Класс: -

public class DocumentMapper 
{ 
    public string DocumentName { get; set; } 

    public string Owner { get; set; } 

    public IEnumerable<string> Editors { get; set; } 

    public IEnumerable<string> Reviewers { get; set; } 

    public IEnumerable<string> Approvers { get; set; } 

} 

Если какое-либо предложение по улучшению этого LINQ, хотелось бы услышать

+1

Не видя своих моделей, вы действительно не можете вам помочь. Единственное, что я могу сказать, это то, что ваши подзапросы для редакторов/утвердителей/рецензентов будут сильно неэффективными. – zaitsman

+0

@zaitsman, не могли бы вы рассказать, как я могу улучшить это? –

+0

@zaitsman, я добавил Model –

ответ

0

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

DocumentName = ((from f in entities.tUsers join g in entities.tCheckoutViewUsers on f.UserUID equals g.ViewUserid where g.IsEditor == true && documentIds.Contains(g.DocumentID) select (g.DocumentName)).First(), 
+0

Я уже пробовал с этим & он также возвращает имя документа, но через месяц назад мне был нужен аналогичный запрос, но я сделал это, используя 'documents.Key', как его отношение ONE TO ONE –

Смежные вопросы