c# - 예제 - linq란




.FirstOrDefault() 대신.DefaultIfEmpty()를 사용 하시겠습니까 ?? String.Empty; (3)

.DefaultIfEmpty() 확장 메서드를 어떻게 통합하여 사용할 수 있습니까?

.FirstOrDefault() ?? String.Empty;

암호:

(from role in roleList
let roleArray = role.RoleId.Split(new char[] { WorkflowConstants.WorkflowRoleDelimiter })
where roleArray.Length.Equals(_SplittedRoleIdArrayLength) && 
      HasAccessToCurrentUnit(roleArray[_UnitIndexInRoleId])
select roleArray[_LevelIndexInRoleId]).FirstOrDefault() ?? String.Empty;


다음을 사용할 수 있습니다.

var query = ...;

return query.DefaultIfEmpty(string.Empty).First();

하지만 이것은 IMO의 복잡성을 줄이지는 못합니다.


확장 메소드에 관심이 있다면 다음과 같이 사용할 수 있습니다 :

public static class Helpers
{
    public static string FirstOrEmpty(this IEnumerable<string> source)
    {
        return source.FirstOrDefault() ?? string.Empty;
    }
}

편집하다

이 메소드는 default(T) 을 사용해야하고 string.Empty 대신 null 제공하기 때문에 일반적이지 않습니다.





linq