DarkVision
DarkVision

Reputation: 1423

Linq to Entities does not recognize the method collection Dictionary

I have a model named EmailDetailModel with a Dictionary field.

My query is:

var query = from email in context.EmailModel
            where rolesForUser.Contains(email.GroupName)
            orderby email.Id descending
            select new EmailDetailModel() 
            {
                From = email.From,
                Id = email.Id,
                message = email.Body,
                subject = email.Subject,
                pathFileName =
                       (from pdf in context.PdfModel
                        where pdf.Email_Id == email.Id
                        select pdf)
                    .ToDictionary(k => k.PathFile, v => v.FileName),
                timeSend = email.ActiveTime};

However an error occurs on this line when trying to send the list to the view:

View(query.ToPagedList(pageNumber, pageSize));

Saying that:

LINQ to Entities does not recognize the method 'System.Collections.Generic.Dictionary

If anybody could help me, I'm not sure how I can pass the key and value into my pathFileName Dictionary.

Upvotes: 0

Views: 169

Answers (1)

Wishwesh Gandhi
Wishwesh Gandhi

Reputation: 58

The issue likely is that there is no SQL like conversion of the dictionary generation that LINQ to Entities can understand.

I have struggled with similar error messages whenever LINQ cannot be translated to a SQL statement.

Upvotes: 1

Related Questions