로 번역 할 수없는 것은 내가 할 노력하고있어입니다 메서드가 List<int>
을 반환 할 때 List<int?>
을 반환 할 수 없기 때문에 Int32로 변환해야합니다.LINQ는 상점 표현 여기
간단한 문제를 해결하는 방법에 대한 제안 사항이 있으십니까? 대신이의
로 번역 할 수없는 것은 내가 할 노력하고있어입니다 메서드가 List<int>
을 반환 할 때 List<int?>
을 반환 할 수 없기 때문에 Int32로 변환해야합니다.LINQ는 상점 표현 여기
간단한 문제를 해결하는 방법에 대한 제안 사항이 있으십니까? 대신이의
:
Select(a => Convert.ToInt32(a.RoleId))
이를 수행
Select(a => a.RoleId.Value)
이유는 오류 설명이다; IQueryable을 통해 이러한 쿼리를 수행 할 때 선택기 내에서 사용되는 메서드는 SQL 쿼리 나 함수로 변환 할 수 있어야합니다. 이 경우 Convert.ToInt32()
은 그런 방법이 아닙니다. 그러나 null
이있는 int
필드의 경우 .NET .Value
속성을 사용하면 작동합니다.
RoldId
이 null
인 경우에는 작동하지 않습니다. InvalidOperationException
이 표시됩니다. 당신은 백업 필드가 null 대신하는 경우 설정 값을 반환 할 수 있습니다 : 하나, 그리고 int.MinValue
없는 경우가있는 경우
Select(a => a.RoleId.HasValue ? a.RoleId.Value : int.MinValue)
이이 값을 반환합니다.
사용이 : 선택 db.Accounts에서 목록 개체를 가지고 물건을 할 수 (A => (INT) a.RoleId)
이것은 나를 위해 일했다. @ 앤드류 버버 (AndrewBarber)의 대답은 그렇지 않았습니다. 고맙습니다. – user2330678
네,이 사람은 다른 사람이하지 않은 곳에서 일했습니다 - 고마워요. – Lyall
보십시오. 그것은 나를 위해 작동합니다. 대신이의
public List<int> GetRolesForAccountByEmail(string email)
{
var account = db.Accounts.SingleOrDefault(a => a.Email == email);
if (account == null) return new List<int>();
return db.AccountRoles.Where(a => a.AccountId == account.AccountId).Select(a => Convert.ToInt32(a.RoleId)).ToList();
}
, 노력이 ..
public List<int> GetRolesForAccountByEmail(string email)
{
var account = db.Accounts.SingleOrDefault(a => a.Email == email);
if (account == null) return new List<int>();
List<AccountRoles> accountRoles= db.AccountRoles.ToList<AccountRoles>();
return accountRoles.Where(a => a.AccountId == account.AccountId).Select(a => Convert.ToInt32(a.RoleId)).ToList();
}
나는'Convert' 기능 엔티티에 LINQ 작동하지 않습니다 생각, 당신은'db.AccountRules을 할 수있는 가능성이있다. AsEnumerable()'그리고 나머지는 – V4Vendetta