I have 4 different entities that I want to join all of them together(like Left join in Sql server), in one of my tables has no information and is empty and I want when the entity returned null then used the default value but returned the exception
This is my Code :
from ps in db.PermissionStructureRepo.Get()
join a in db.ActionRepo.Get() on ps.ActionID equals a.ActionID into pa
from r in pa.DefaultIfEmpty()
join p in db.PermissionRepo.Get((x => x.UserID == userId), null, null, null) on ps.PermissionStructureID equals p.PermissionStructureID into rp
from r2 in rp.DefaultIfEmpty()
join ug in db.UserGroupRepo.Get() on r2.UserGroupID.GetValueOrDefault(0) equals ug.UserGroupID into rug
from r3 in rug.DefaultIfEmpty()
select new
{
ps.PermissionStructureID,
ParentStructureID = ps.ParentStructureID.GetValueOrDefault(0),
Selected = (r2.PermissionID > 0 ? true : false),
r.ActionID,
ActionName = (ps.ActionDataFieldID.GetValueOrDefault(0) > 0 ? ps.ActionPersianColumnName : r.ActionName),
r3.UserGroupID,
r3.GroupName,
ActionDataFieldID = ps.ActionDataFieldID.GetValueOrDefault(0),
ps.ActionDataFieldName,
r2.AllowCreatePermission,
r2.AllowUpdatePermission,
r2.AllowDeletePermission,
r2.DenyCreatePermission,
r2.DenyDeletePermission,
r2.DenyUpdatePermission
}
and this is the exception :
Object reference not set to an instance of an object. Message: at MIM.PubUsers.PubUsersBLL.<>c.b__6_10(<>f__AnonymousType3
2 <>h__TransparentIdentifier3) in E:\Projects\MIM.App\MIM\Common\MIM.PubUsers\MIM.PubUsers\PubUsersBLL.cs:line 188 at System.Linq.Enumerable.<GroupJoinIterator>d__41
4.MoveNext() at System.Linq.Enumerable.d__233.MoveNext() at System.Collections.Generic.List
1..ctor(IEnumerable1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable
1 source) at MIM.PubUsers.PubUsersBLL.FillPermissionTree(EnumFormState state, Int32 userId)