Alex Rivera | Logout

The LINQ expression node type 'ArrayIndex' is not supported in LINQ to Entities

Asked 2011-12-02T09:03:03.760
62
public List<string> GetpathsById(List<long> id)
{
    long[] aa = id.ToArray();
        long x;
    List<string> paths = new List<string>();
    for (int i = 0; i < id.Count; i++)
    {
        x = id[i];
        Presentation press = context.Presentations.Where(m => m.PresId == aa[i]).FirstOrDefault();
        paths.Add(press.FilePath);
    }
    return paths;
}

This code throws the following exception: The LINQ expression node type 'ArrayIndex' is not supported in LINQ to Entities.

However, if I supply x instead of aa[i] it works.

Why?

Edit
Report

1 Answer

1
public List<string> GetpathsById(List<long> id) 
{ 
        long x; 
    List<string> paths = new List<string>(); 
    foreach(long aa in id) 
    { 
        Presentation press = context.Presentations.Where(m => m.PresId == aa).FirstOrDefault(); 
        paths.Add(press.FilePath); 
    } 
    return paths; 
} 

to

public IEnumerable<String> GetpathsById(List<long> id) 
{ 
    foreach(long item in id) 
        yield return = (context.Presentations.Where(m => m.PresId == item).FirstOrDefault()).FilePath
} 

"Short style", but not recomended if you write a lot of other function.

answered 2013-05-08T09:16:03.227

Your Answer