Linq를 사용하여 목록에서 연속 된 두 항목의 하위 목록을 찾는 방법

아마드

다음과 같은 문자열 목록이 있다고 가정합니다.

"A", "B", "C", "D", "E", "F"

이제이 목록 에서 연속 된항목 하위 목록 을 검색하고 싶습니다 D E. Linq를 사용하여 어떻게 할 수 있습니까?

내 접근 방식은 다음과 같습니다.

int i = list.FindIndex(x => x == "D");
int j = list.FindIndex(x => x == "E");

int p = i < 0 || j < 0 ? -1 : (j == i + 1 ? i : -1);

올바른 해결책입니까? 더 짧은 해결책이 있습니까?

세르게이 칼리니첸코

다음과 같이 접근 방식을 다시 작성할 수 있습니다.

bool hasSublist = list
    .SkipWhile(x => x != "D")
    .Take(2)
    .SequenceEquals(new[] {"D", "E"});

시작 색인이 필요한 경우 {"D", "E"}문자와 색인을 쌍으로하는 선택 항목을 추가 할 수 있습니다.

그러나 접근 방식의 문제 는 예를 들어 "D"뒤에 오지 않는 다른 시퀀스가 ​​있으면 하위 시퀀스를 놓칠 수 있다는 것입니다."E"

"D" "A" "D" "B" "D" "C" "D" "D" "D" "E"

거기에있다 "D" "E"끝에,하지만 방법은 먼저 찾은 후 정지합니다 "D".

길이가 2 인 하위 목록을 찾고 있다면 다음 Zip과 같이 사용할 수 있습니다 .

bool hasSublist = list
    .Zip(list.Skip(1), (a, b) => new {a, b})
    .Any(p => p.a == "D" && p.b == "E");

그러나 이것은 더 긴 하위 목록에 대해서는 확장되지 않습니다.

일반 for루프를 사용하면 훨씬 더 잘 작동합니다.

for (var i = 0 ; i < list.Count-1 ; i++) {
    if (list[i] == "D" && list[i+1] == "E") {
        ...
    }
}

if내부를 대체 할 수 SequenceEquals있는 길이의 하위 목록을 수용 :

var desiredSublist = new[] {"D", "E", "F"};
for (var i = 0 ; i < list.Count-desiredSublist+1 ; i++) {
    if (list.Skip(i).SequenceEquals(desiredSublist)) {
        ...
    }
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

linq를 사용하여 목록에서 연속 값을 계산하는 방법

분류에서Dev

apigee에서 ExtractVariables 정책을 사용하여 응답으로 반환 된 xml 항목 목록의 두 번째 요소를 읽는 방법은 무엇입니까?

분류에서Dev

LINQ를 사용하여 목록에서 특정 기준의 항목을 하나만 제외하고 모두 필터링하는 방법은 무엇입니까?

분류에서Dev

Textbox (localdatabase)를 사용하여 목록 상자에서 항목을 찾는 방법

분류에서Dev

다른 목록에 존재하는 두 목록에서 2 개의 항목을 찾는 Pythonic 방법

분류에서Dev

다른 목록에 존재하는 두 목록에서 2 개의 항목을 찾는 Pythonic 방법

분류에서Dev

Java의 두 목록에서 Stream Api를 사용하여 목록을 만드는 방법

분류에서Dev

pnp powershell을 사용하여 SharePoint Online 목록에서 마지막으로 수정 된 항목의 항목 ID를 얻는 방법은 무엇입니까?

분류에서Dev

LINQ를 사용하여 목록에서 두 번째로 큰 요소를 찾는 방법

분류에서Dev

목록의 ID 내에서 두 값을 연결하는 방법

분류에서Dev

jQuery를 사용하여 드롭 다운 목록에서 최종 선택된 항목을받는 방법

분류에서Dev

목록의 이전 항목을로드하지 않고 angularjs를 사용하여 JavaScript의 목록에서 항목을 제거하는 방법

분류에서Dev

파이썬을 사용하여 목록에서 연속 된 숫자 만 선택하는 방법

분류에서Dev

jQuery를 사용하여 특정 클래스가있는 정렬 된 목록 항목을 목록의 맨 위로 이동하는 방법

분류에서Dev

Linq 또는 기타를 사용하여 목록에서 일치하는 항목을 제거하는 방법

분류에서Dev

LINQ를 사용하여 다른 목록에 가장 많은 구성원이있는 목록의 모든 항목을 찾는 방법은 무엇입니까?

분류에서Dev

함수 및 목록-함수를 사용하여 두 목록을 연결하는 방법은 무엇입니까?

분류에서Dev

linq 목록에서 두 숫자 사이의 모든 일치 항목을 찾는 방법

분류에서Dev

Linq를 사용하여 특정 구성원 목록을 제외한 컬렉션에서 항목을 선택하는 최적화 된 방법

분류에서Dev

파이썬에서 항목 간의 관계를 찾기 위해 두 목록을 반복하는 더 좋은 방법이 있습니까?

분류에서Dev

다른 목록의 항목에서 찾은 단어가 포함 된 목록에서 항목을 제거하는 방법

분류에서Dev

PySpark를 사용하여 데이터 프레임에서 위치별로 두 목록을 병합하는 방법

분류에서Dev

Pandas를 사용하여 목록에서 가장 많이 발생하는 항목을 찾는 방법

분류에서Dev

정수도 포함 된 목록 목록에서 가장 작은 하위 목록을 찾는 방법

분류에서Dev

contextMenu를 사용하여 목록보기에서 항목의 다른 활동에 값을 전달하는 방법

분류에서Dev

Android에서 여러 항목을 선택하여 사용자 지정 목록보기에서 확인 된 항목 ID를 얻는 방법

분류에서Dev

연결된 목록에서 선택한 두 요소 사이의 모든 요소를 제거하는 방법

분류에서Dev

구분 기호를 사용하여 JavaScript의 단일 목록에서 하위 목록을 만드는 방법

분류에서Dev

bash를 사용하여 쉼표로 구분 된 항목을 포함하여 목록의 모든 항목을 인쇄하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    linq를 사용하여 목록에서 연속 값을 계산하는 방법

  2. 2

    apigee에서 ExtractVariables 정책을 사용하여 응답으로 반환 된 xml 항목 목록의 두 번째 요소를 읽는 방법은 무엇입니까?

  3. 3

    LINQ를 사용하여 목록에서 특정 기준의 항목을 하나만 제외하고 모두 필터링하는 방법은 무엇입니까?

  4. 4

    Textbox (localdatabase)를 사용하여 목록 상자에서 항목을 찾는 방법

  5. 5

    다른 목록에 존재하는 두 목록에서 2 개의 항목을 찾는 Pythonic 방법

  6. 6

    다른 목록에 존재하는 두 목록에서 2 개의 항목을 찾는 Pythonic 방법

  7. 7

    Java의 두 목록에서 Stream Api를 사용하여 목록을 만드는 방법

  8. 8

    pnp powershell을 사용하여 SharePoint Online 목록에서 마지막으로 수정 된 항목의 항목 ID를 얻는 방법은 무엇입니까?

  9. 9

    LINQ를 사용하여 목록에서 두 번째로 큰 요소를 찾는 방법

  10. 10

    목록의 ID 내에서 두 값을 연결하는 방법

  11. 11

    jQuery를 사용하여 드롭 다운 목록에서 최종 선택된 항목을받는 방법

  12. 12

    목록의 이전 항목을로드하지 않고 angularjs를 사용하여 JavaScript의 목록에서 항목을 제거하는 방법

  13. 13

    파이썬을 사용하여 목록에서 연속 된 숫자 만 선택하는 방법

  14. 14

    jQuery를 사용하여 특정 클래스가있는 정렬 된 목록 항목을 목록의 맨 위로 이동하는 방법

  15. 15

    Linq 또는 기타를 사용하여 목록에서 일치하는 항목을 제거하는 방법

  16. 16

    LINQ를 사용하여 다른 목록에 가장 많은 구성원이있는 목록의 모든 항목을 찾는 방법은 무엇입니까?

  17. 17

    함수 및 목록-함수를 사용하여 두 목록을 연결하는 방법은 무엇입니까?

  18. 18

    linq 목록에서 두 숫자 사이의 모든 일치 항목을 찾는 방법

  19. 19

    Linq를 사용하여 특정 구성원 목록을 제외한 컬렉션에서 항목을 선택하는 최적화 된 방법

  20. 20

    파이썬에서 항목 간의 관계를 찾기 위해 두 목록을 반복하는 더 좋은 방법이 있습니까?

  21. 21

    다른 목록의 항목에서 찾은 단어가 포함 된 목록에서 항목을 제거하는 방법

  22. 22

    PySpark를 사용하여 데이터 프레임에서 위치별로 두 목록을 병합하는 방법

  23. 23

    Pandas를 사용하여 목록에서 가장 많이 발생하는 항목을 찾는 방법

  24. 24

    정수도 포함 된 목록 목록에서 가장 작은 하위 목록을 찾는 방법

  25. 25

    contextMenu를 사용하여 목록보기에서 항목의 다른 활동에 값을 전달하는 방법

  26. 26

    Android에서 여러 항목을 선택하여 사용자 지정 목록보기에서 확인 된 항목 ID를 얻는 방법

  27. 27

    연결된 목록에서 선택한 두 요소 사이의 모든 요소를 제거하는 방법

  28. 28

    구분 기호를 사용하여 JavaScript의 단일 목록에서 하위 목록을 만드는 방법

  29. 29

    bash를 사용하여 쉼표로 구분 된 항목을 포함하여 목록의 모든 항목을 인쇄하는 방법은 무엇입니까?

뜨겁다태그

보관