Linkq 목록에서 존재하는 개체 선택(A,B,C)
의 목록이 있습니다.orders
.
선택합니다.orders
일련의 주문 상태를 기준으로 합니다.
그래서 본질적으로select orders where order.StatusCode in ("A", "B", "C")
// Filter the orders based on the order status
var filteredOrders = from order in orders.Order
where order.StatusCode.????????("A", "B", "C")
select order;
상태 코드도 모음이므로 다음을 사용합니다.
var allowedStatus = new[]{ "A", "B", "C" };
var filteredOrders = orders.Order.Where(o => allowedStatus.Contains(o.StatusCode));
또는 쿼리 구문:
var filteredOrders = from order in orders.Order
where allowedStatus.Contains(order.StatusCode)
select order;
NB: 이것은 객체에 대한 LINQ입니다. 엔티티에 대한 LINQ에서 작동하는지 100% 확신할 수 없으며 지금 당장 확인할 시간이 없습니다.사실 [A,B,C]에서 x로 번역하는 것은 그리 어렵지 않지만, 직접 확인해야 합니다.
그래서, ?를 대체하는 Contains 대신에?코드에서 LINQuish가 더 많은 Any를 사용할 수 있습니다.
// Filter the orders based on the order status
var filteredOrders = from order in orders.Order
where new[] { "A", "B", "C" }.Any(s => s == order.StatusCode)
select order;
SQL에서 알고 있는 것과는 반대로, 이것이 명확하지 않은 이유입니다.
물론 여기서 유창한 구문을 선호한다면 다음과 같습니다.
var filteredOrders = orders.Order.Where(order => new[] {"A", "B", "C"}.Any(s => s == order.StatusCode));
여기서 다시 LINQ의 놀라운 점 중 하나를 확인할 수 있습니다(마지막에 선택을 입력하는 Joda-speech와 같은 것).그러나 목록(set, collection)의 항목 중 하나 이상이 단일 값과 일치하는지 확인한다는 점에서 매우 논리적입니다.
var statuses = new[] { "A", "B", "C" };
var filteredOrders = from order in orders.Order
where statuses.Contains(order.StatusCode)
select order;
기능을 사용해 보십시오.
시퀀스에 지정된 요소가 포함되어 있는지 여부를 결정합니다.
var allowedStatus = new[]{ "A", "B", "C" };
var filteredOrders = orders.Order.Where(o => allowedStatus.Contains(o.StatusCode));
조심해..Contains()
예상치 못한 문자열을 포함하여 모든 하위 문자열과 일치합니다.예를 들면. new[] { "A", "B", "AA" }.Contains("A")
당신이 원하지 않을 수도 있는 A와 AA를 둘 다 돌려줄 것입니다.저는 그것에 물렸습니다.
.Any()
또는.Exists()
더 안전한 선택
언급URL : https://stackoverflow.com/questions/14257360/linq-select-objects-in-list-where-exists-in-a-b-c
'source' 카테고리의 다른 글
Angular 2+ - 기본 href를 동적으로 설정합니다. (0) | 2023.04.27 |
---|---|
xlrd 및 xlwt로 기존 Excel 워크북 및 시트 편집 (0) | 2023.04.27 |
빠른 출발방법으로? (0) | 2023.04.27 |
asp.net mvc 보기에서 문자열을 html로 표시 (0) | 2023.04.27 |
뉴리얼과 애저 인사이트의 비교 (0) | 2023.04.27 |