I don't do EF, so I am focusing on the code only. But nevertheless maybe this will help you in doing joins with EF: how-to-join-multiple-tables-using-repository-pattern-entity-frameworkhow-to-join-multiple-tables-using-repository-pattern-entity-framework
- Based on the naming guidelines input parameters should be named using
camelCasecasing. So
public List<int> GetUserPrevileges(string UserName)
should be
public List<int> GetUserPrevileges(string userName)
The same is true local varaiables like Privs but in addition you shouldn't shorten your varaiables names because you are reducing the readability of your code. So better use privileges instead of Privs.
- This
if..else
if (Privs.Any()) { return Privs.ToList(); } else { return null; }
does not add real value. Why do you want to return null? It would be much easier for the calling code if you return an empty List for the case that there aren't any privileges which match the requirement.
If the IQuerable<T> doesn't contain any items, a call to ToList() will just create an empty list.
If you use the returned List<> to just iterate over the items, you won't even need a check if it is empty.