linq-to-entities 쿼리에서 nvarchar 열에 대해 쿼리 할 때 공백을 더 짧은 길이의 값 앞에 추가하는 방법은 무엇입니까?LINQ to Entities 쿼리에 공백을 사전에 추가하는 방법
필자는이 기능을 사용하여 특정 필드의 적절한 정렬을 용이하게합니다. 나는 거의 모든 테이블에 부품 번호를 열이 포함 된 데이터베이스가
:
여기 내 시나리오입니다. 이러한 부품 번호 열은 데이터베이스에서 nvarchar (20)로 표시됩니다. 그들은 대개 6 자리와 8 자리 부품 번호의 조합을 포함합니다. 이 부분의 "숫자"의 대다수는 사실 숫자입니다. 일부는 숫자가 아닙니다. 결과적으로 정수가 아닌 문자열로 표현됩니다.
이 부품 번호는 숫자가 아닌 문자열로 표시되기 때문에 제대로 정렬되지 않습니다. 6 자리와 8 자리 값은 별도로 그룹화되지 않고 혼합되어 있습니다. 그래서 정렬 문제를 해결하기 위해 더 짧은 길이의 값을 선행 공백으로 채 웁니다.
나는이 열 오히려 보다는 NVARCHAR NCHAR 로 저장한다면, 나는 자동으로 패딩을 얻을 것이라는 점을 깨닫는다. 그러나이 시점에서이 열의 데이터 형식을 변경하는 것은 옵션이 아닙니다. 난 내 자신의 LINQ 쿼리 공예 때
, 나는 제대로 정렬 할 수 있습니다 (예 : 그리드와 같은) 다른 도구가 자동으로 쿼리를 작성할 때db.table.Select(_ => _.partNumberColumn).OrderBy(_ => _.Length).ThenBy(_ => _);
문제가 발생합니다. 그런 다음 추가 정렬 요구 사항에 대해 알지 못합니다. 따라서 짧은 길이의 값 앞에 공백을 추가하는 것이 좋은 해결책 인 것 같습니다.
다음은 검색어 예입니다. 모델을 만들 때 단순히 값을 가져 오는 것이 아니라 6 문자 값에 2 개의 공백을 앞에두고 싶습니다.
_db.HubAssembliesWides
.Select(_ =>
new Models.HubAssemblyModel()
{
HubAssemblyNumber = _.HubAssemblyNumber,
DetailedOnNumber = _.DetailedOnNumber,
HubMachiningNumber = _.HubMachiningNumber,
HubCastingNumber = _.HubCastingNumber,
ComponentHubAssemblyNumber = _.ComponentHubAssemblyNumber
}
);
그래서 대신
HubAssemblyNumber = _.HubAssemblyNumber
나는 HubAssemblyNumber = _.HubAssemblyNumber.Length == 6 ? " " + _.HubAssemblyNumber : _.HubAssemblyNumber
가이 작업을 수행 할 수 줄까? 감사!