테이블 Fruits
이 있고 GetFruitName 메서드를 작성했다고 가정 해 보겠습니다. 과일의 열 FruitName
은 string/varchar
이며 null 일 수 있습니다. 따라서 FruitName이 null 인 경우 FruitName을 FruitId와 연결된 과일로 반환하기 만하면됩니다.LINQ에서 삼항 연산자를 사용하여 조건부 투영
메소드를 호출 할 때이 오류가 발생합니다. 엔티티
LINQ는 방법 ' 형식 (선택 System.String,은 System.Object)를 선택 System.String'방식을 인식하지 않고,이 방법은 저장 식으로 변환 될 수 .
public class Fruit
{
public Guid FruitId { get; set; }
public string FruitName { get; set; }
}
public string GetFruitName(Guid key)
{
return dbContext.Fruits
.Where(fr=> fr.FruitId== key)
.Select
(
fr=>
fr.FruitName!= null
? fr.FruitName
: $"Fruit_{fr.FruitId}"
)
.SingleOrDefault();
}
편집 : 우리가 문 경우는 null 검사와 중간 변수를 사용하지 않고이 작업을 수행 할 수 있는지가 궁금 . 쿼리와
public string GetFruitName(Guid key)
{
var fruit = dbContext.Fruits
.SingleOrDefault(fr=> fr.FruitId== key);
// Here is your call. I choosed to return an empty string in case of
// a fruit not found. You can return also null.
var fruitName = string.Empty;
if(fruit != null)
{
// The fruit with the supplied key found. Get it's name.
fruitName = fruit.FruitName != null
? fr.FruitName
: $"Fruit_{fr.FruitId}";
}
return fruitName;
}
문제는 삼항 연산자가 아니라 보간 문자열 $"Fruit_{fr.FruitId}"
사용하는 string.Format
방법 :
감사합니다. Christos. 예,이 방법으로 솔루션을 이미 수정했습니다. 그러나 중간 변수가없는 인라인 교정을 기대하고있었습니다. – Ankit
@Ankit 내 업데이트를 참조하십시오. 임시 변수가 없으면 이런 식으로 작성할 수 있다고 생각합니다. – Christos
예, 작동합니다. 또는 정규 문자열 병합을 사용하기도했습니다. – Ankit