I don’t know why, when I execute this LINQ request, this exception is returned :
<code>System.InvalidOperationException: The LINQ expression '__ids_0
.Contains(StructuralTypeShaperExpression:
Patron.Domain.RoleAggregate.Role
ValueBufferExpression:
ProjectionBindingExpression: EmptyProjectionMember
IsNullable: False
.Id.Value)' could not be translated.
</code>
<code>System.InvalidOperationException: The LINQ expression '__ids_0
.Contains(StructuralTypeShaperExpression:
Patron.Domain.RoleAggregate.Role
ValueBufferExpression:
ProjectionBindingExpression: EmptyProjectionMember
IsNullable: False
.Id.Value)' could not be translated.
</code>
System.InvalidOperationException: The LINQ expression '__ids_0
.Contains(StructuralTypeShaperExpression:
Patron.Domain.RoleAggregate.Role
ValueBufferExpression:
ProjectionBindingExpression: EmptyProjectionMember
IsNullable: False
.Id.Value)' could not be translated.
That is the code (RoleId is a ValueObject which has a Guid as .Value property, the same for Id.Value)
<code>public async Task<List<Role>> GetRolesByIdsAsync(List<RoleId> roleIds)
{
var ids = roleIds.Select(id => id.Value).ToList();
return await dbContext.Roles
.Where(r => ids.Contains(r.Id.Value))
.ToListAsync();
}
</code>
<code>public async Task<List<Role>> GetRolesByIdsAsync(List<RoleId> roleIds)
{
var ids = roleIds.Select(id => id.Value).ToList();
return await dbContext.Roles
.Where(r => ids.Contains(r.Id.Value))
.ToListAsync();
}
</code>
public async Task<List<Role>> GetRolesByIdsAsync(List<RoleId> roleIds)
{
var ids = roleIds.Select(id => id.Value).ToList();
return await dbContext.Roles
.Where(r => ids.Contains(r.Id.Value))
.ToListAsync();
}
I tryed with the Any() method instead of Contains() but I have the same message.
I found a solution but it’s very ugly and not optimised (I want to use LINQ) :
<code>public async Task<List<Role>> GetListRoleByListId(List<RoleId> roleIds)
{
var roles = new List<Role>();
foreach (var role in await dbContext.Roles.ToListAsync())
{
foreach (var roleId in roleIds)
{
if (role.Id.Equals(roleId))
{
roles.Add(role);
}
}
}
return roles;
}
</code>
<code>public async Task<List<Role>> GetListRoleByListId(List<RoleId> roleIds)
{
var roles = new List<Role>();
foreach (var role in await dbContext.Roles.ToListAsync())
{
foreach (var roleId in roleIds)
{
if (role.Id.Equals(roleId))
{
roles.Add(role);
}
}
}
return roles;
}
</code>
public async Task<List<Role>> GetListRoleByListId(List<RoleId> roleIds)
{
var roles = new List<Role>();
foreach (var role in await dbContext.Roles.ToListAsync())
{
foreach (var roleId in roleIds)
{
if (role.Id.Equals(roleId))
{
roles.Add(role);
}
}
}
return roles;
}
Someone knows where this error comes from and how fix it please ?