where () 메서드에서 for 루프 사용

즐라탄 114r

그래서 입력이있을 때 컨트롤러에 값을 전달하는 검색 입력과 확인란이 있습니다. 그리고이 값을 사용하여 데이터베이스에서 무언가를 되찾고 싶습니다. 검색 입력은 문자열이며 작동하고 의도합니다. 검색 입력 코드는 다음과 같습니다.

public async Task<ViewResult> Index(string searchString, List<int> checkedTypes)
{
    var products = from p in _db.Products select p;

    ViewData["CurrentFilter"] = searchString;
    
    if (!string.IsNullOrEmpty(searchString))
    {
        products = products.Where(p => p.Name.ToLower().Contains(searchString));
    }
    
    return View(products);
}

그러나 확인란 값은 목록에 저장됩니다. 그래서 기본적으로 위의 코드와 동일하지만 목록을 사용하고 싶습니다. 따라서 기본적으로 아이디어는 다음과 같습니다.

if(checkedTypes != null)
{
    foreach (var i in checkedTypes)
    {
        products = products.Where(p => p.TypeId == i));
    }              
}

위의 코드처럼 수행하면 루프에서 마지막 (i)를 얻습니다. 내가 한 또 다른 해결책은 다음과 같습니다.

if(checkedTypes != null)
{
    var temp = new List<Product>();
    
    foreach (var i in checkedTypes)
    {
        temp.AddRange(products.Where(p => p.TypeId == i));
    }
    products = temp.AsQueryable();
}

하지만 그렇게했을 때이 오류가 발생합니다.

InvalidOperationException : 소스 IQueryable의 공급자가 IAsyncQueryProvider를 구현하지 않습니다. IAsyncQueryProvider를 구현하는 공급자 만 Entity Framework 비동기 작업에 사용할 수 있습니다.

그래서 누구든지 내가 사용할 수있는 솔루션이 있습니까? 아니면 컨트롤러에서 확인란을 처리하는 더 좋은 방법이 있습니까?

전문가 스 트론

EF Core를 사용하고 있다고 가정합니다 (linq2db에서도 마찬가지 임)-로컬 컬렉션 (예 : Where(x => checkedTypes.Contains(x.SomeId)).

당신은에 의해 필터 논리를 가지고 "와"하는 경우 searchStringcheckedTypes조건부 추가 할 수있는 것보다 Where절을 :

  if (!string.IsNullOrEmpty(searchString))
  {
       products = products.Where(p => p.Name.ToLower().Contains(searchString));
  }

  if(checkedTypes != null)
  {
       products = products.Where(p => checkedTypes.Contains(p.TypeId));    
  }

추신

또한 첫 번째 줄을 다음과 같이 변경할 수 있어야합니다.

var products = _db.Products.AsQueryable();

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

for 루프에서 append 메소드 사용

분류에서Dev

Rails Controller 메서드에서 .where 사용

분류에서Dev

Where 절에서 While 루프를 사용하는 방법

분류에서Dev

.each () 루프에서 .delay () 메서드를 사용하는 jQuery

분류에서Dev

외부 메서드를 사용하여 루프에서 중단

분류에서Dev

foreach 루프에서 for 루프 값 사용

분류에서Dev

while 루프 내에서 for 루프 사용

분류에서Dev

bcftools에서 for 루프 사용

분류에서Dev

루프에서 urlib 사용

분류에서Dev

XSLT에서 for 루프 사용

분류에서Dev

Matlab에서 for 루프 사용

분류에서Dev

For 루프에서 Grep 사용

분류에서Dev

for 루프에서 if 문 사용

분류에서Dev

"for 루프"에서 IFS 사용

분류에서Dev

루프 (노드)에서 약속 사용

분류에서Dev

jquery / javascript에서 루프를 사용하여 메서드를 만드는 방법

분류에서Dev

'Each'메서드를 사용하여 do 루프에서 새 배열 만들기

분류에서Dev

string.format 메서드 내에서 for 루프를 사용할 수 있습니까?

분류에서Dev

for 루프에서 Angular의 $ timeout을 사용하여 메서드 실행

분류에서Dev

.FindNext 메서드를 사용하여 VBA에서 무한 루프 디버그

분류에서Dev

vba의 루프 내에서 NumberFormat 메서드를 사용하는 방법

분류에서Dev

Eloquent와 함께 where 문에서 모델 메서드 사용

분류에서Dev

리턴 코드에 관계없이 루프에서 메모리 사용 가능

분류에서Dev

Ruby while 루프를 사용하여 클래스 메서드에 액세스

분류에서Dev

메서드를 호출 할 때 for 루프 사용

분류에서Dev

for 루프를 사용하는 pop () 메서드

분류에서Dev

비동기 메서드를 사용하는 While 루프

분류에서Dev

for 루프에서 "here 문서"사용

분류에서Dev

익명 메서드에서 while 루프에서 break를 사용할 수없는 이유는 무엇입니까?

Related 관련 기사

  1. 1

    for 루프에서 append 메소드 사용

  2. 2

    Rails Controller 메서드에서 .where 사용

  3. 3

    Where 절에서 While 루프를 사용하는 방법

  4. 4

    .each () 루프에서 .delay () 메서드를 사용하는 jQuery

  5. 5

    외부 메서드를 사용하여 루프에서 중단

  6. 6

    foreach 루프에서 for 루프 값 사용

  7. 7

    while 루프 내에서 for 루프 사용

  8. 8

    bcftools에서 for 루프 사용

  9. 9

    루프에서 urlib 사용

  10. 10

    XSLT에서 for 루프 사용

  11. 11

    Matlab에서 for 루프 사용

  12. 12

    For 루프에서 Grep 사용

  13. 13

    for 루프에서 if 문 사용

  14. 14

    "for 루프"에서 IFS 사용

  15. 15

    루프 (노드)에서 약속 사용

  16. 16

    jquery / javascript에서 루프를 사용하여 메서드를 만드는 방법

  17. 17

    'Each'메서드를 사용하여 do 루프에서 새 배열 만들기

  18. 18

    string.format 메서드 내에서 for 루프를 사용할 수 있습니까?

  19. 19

    for 루프에서 Angular의 $ timeout을 사용하여 메서드 실행

  20. 20

    .FindNext 메서드를 사용하여 VBA에서 무한 루프 디버그

  21. 21

    vba의 루프 내에서 NumberFormat 메서드를 사용하는 방법

  22. 22

    Eloquent와 함께 where 문에서 모델 메서드 사용

  23. 23

    리턴 코드에 관계없이 루프에서 메모리 사용 가능

  24. 24

    Ruby while 루프를 사용하여 클래스 메서드에 액세스

  25. 25

    메서드를 호출 할 때 for 루프 사용

  26. 26

    for 루프를 사용하는 pop () 메서드

  27. 27

    비동기 메서드를 사용하는 While 루프

  28. 28

    for 루프에서 "here 문서"사용

  29. 29

    익명 메서드에서 while 루프에서 break를 사용할 수없는 이유는 무엇입니까?

뜨겁다태그

보관