2015-01-09 1 views
0

MVC 및 LINQ에 익숙하지 않으며 할당 된 새 프로젝트에 AngularJs 및 MVC를 사용하는 방법을 배우고 있습니다. 그래서 나는 온라인 비디오를 통해 이러한 기술을 배우고 있습니다. 교사는 코드 첫 번째 접근법을 사용하므로 Visual Studio는 튜토리얼 모델과 일치하는 모든 필요한 파일과 데이터베이스를 만듭니다. 반면에 이미 데이터베이스가 있고 API를 만들었습니다. DB에 대해 REST 조작을 수행하십시오. 내가LINQ를 사용하여 IEumerable을 검색 및 정렬

 public IEnumerable<Todo> GetTodos() 
    { 

     return Models.DbStoredProcModel.GetAllTodos.GetAllTodoEntryStoredProcedure(); 
    } 

아래에이 코드를 실행하면 그래서이

enter image description here

그래서 지금까지 내 JSON 출력이 우리의 코드 접근 방식에도 불구하고 비디오 자습서와 일치 같은 JSON 출력을 반환 다른.

public IEnumerable<Todo> GetTodos(string q= null,string sort = null, bool desc = false, int ? limit = null, int offset =0) 
    { 
     var result = ((IObjectContextAdapter)db).ObjectContext.CreateObjectSet<Todo>(); 

     IQueryable<Todo> items = string.IsNullOrEmpty(sort) 
      ? result.OrderBy(o => o.Priority) 
      : result.OrderBy(String.Format("it. {0} {1}", sort, desc ? "DESC" : "ASC")); 

     if (!string.IsNullOrEmpty(q) && q != "undefined") 
      items = items.Where(t => t.Text.Contains(q)); 

     if (offset > 0) items = items.Skip(offset); 
     if (limit.HasValue) items = items.Take(limit.Value); 

     return items; 
    } 

이 그를 검색을 수행하고 반환 된 데이터에 대한 작업을 정렬 할 수 있습니다 : 그래서 교사는이 코드 조각을 사용하여 그는

교사 코드를 썼다.

지금 여기 내 자신의 코드는 동일한 작업을 수행하려고 노력하고 있습니다.

 public IEnumerable<Todo> GetTodos(string q= null,string sort = null, bool desc = false, int ? limit = null, int offset =0) 
    { 
     var result = Models.DbStoredProcModel.GetAllTodos.GetAllTodoEntryStoredProcedure(); 

     IQueryable<Todo> items = string.IsNullOrEmpty(sort) 
      ? result.OrderBy(o => o.Priority) 
      // i get the error on the line below 
      : result.OrderBy(String.Format("it. {0} {1}", sort, desc ? "DESC" : "ASC")); 

     if (!string.IsNullOrEmpty(q) && q != "undefined") 
      items = items.Where(t => t.Text.Contains(q)); 

     if (offset > 0) items = items.Skip(offset); 
     if (limit.HasValue) items = items.Take(limit.Value); 

     return items; 

    } 

그러나, 나는 오류가

Error:The type arguments for method 'System.Linq.Enumerable.OrderBy<TSource,TKey>(System.Collections.Generic.IEnumerable<TSource>, System.Func<TSource,TKey>)' cannot be inferred from the usage. Try specifying the type arguments explicitly.

가 어떻게이 문제를 해결 않는다는 것을 말하는거야?

+0

스토어드 프로 시저 (IQueryable을 반환하지 않음)를 사용 중이므로'items'에 할당하려고하면 실패 할 것이라고 생각합니다. 실제로 매개 변수를 저장 프로 시저에 전달해야합니다. – markpsmith

+1

문자열을 받아들이는 OrderBy extesion 버전이 있습니까? http://msdn.microsoft.com/pt-br/library/system.linq.queryable.orderby(v=vs.110).aspx – gustavodidomenico

+0

여기에서와 같이, 나는 "OrderBy"메소드를 인식하지 못한다. 문자열을 매개 변수로 사용합니다. 더 많은 정보를 제공해야합니다. 내가 말했듯이 –

답변

-1

변경

result.OrderBy(String.Format("it. {0} {1}", sort, desc ? "DESC" : "ASC")) 

더 명확한 오류 메시지

result.OrderBy<Todo,string>(String.Format("it. {0} {1}", sort, desc ? "DESC" : "ASC")) 

합니다.

근본적인 문제는

result.OrderBy(String.Format("it. {0} {1}", sort, desc ? "DESC" : "ASC")) 

응용 프로그램의 맥락에서 의미있는 해석이없는 것이 아마도. 그것은 나에게 동적 linq처럼 보이는데, 참조 된 것보다 다른 OrderBy 정의를 끌어 당기는 참조가 필요합니다.

제 제안은 놓친 경우에 대비하여 튜토리얼에서 참조하는 네임 스페이스 (프로젝트 참조와이 파일의 맨 위에 있음)를 확인하는 것입니다.

+2

이것은 아무 것도 변경하지 않을 것입니다. 그 코드 행은 이미 일반적인 주장을 정확하게 추론하고있었습니다. – Servy

+0

오오 그렇습니다. 지금 질문이 있습니다. – Kaido

+1

질문에 대한 답이 거의 없습니다. 분명히 의도는'Enumerable.OrderBy' 메쏘드를 사용하지 않는 것입니다, 그래서 실제 구현은 두 개의 일반적인 인자를 가지지 않을 것입니다. – Servy

관련 문제