2013-03-25 4 views
1

저장된 항목의 값이 목록의 값과 일치하는 항목을 검색하는 일부 linq를 작성하려고합니다. 문자열 목록 인 경우이 작업을 쉽게 수행 할 수 있습니다. & 문자열을 검색하지만 enum (ints) 목록 일 때 알아낼 수는 없습니다. linq contains (int) items in array

List<MyEnum> categories = new List<MyEnum>(); 

categories.Add(MyEnum.Fred); 
categories.Add(MyEnum.Bill); 
categories.Add(MyEnum.Jim); 

// MyTable.Category is of type MyEnum 
return (from o in Table<MyTable>() 
     where categories.Any(val => o.Category.Contains(val)) 
     select o).Count(); 

추가 정보와 함께 편집 -

코드는 다음과 같습니다

public int LocalOffersCount(double distance, List<LocalCategory> categories) 
{ 
    try 
    { 
     return (from o in Table<LocalOffer>() where categories.Any(val => o.Category.Contains(val)) select o).Count(); 
    } 
    catch (Exception ex) 
    { 
     Log.Error("DatabaseService->LocalOffersCount: " + ex.Message); 
     return 0; 
    } 
} 

을 MyTable 다양한 항목이 포함되어, 「카테고리」항목은 10

에가는 일에 시작하는 LocalCategory 열거입니다

내가 얻는 컴파일 오류는 다음과 같습니다. -

메소드의 유형 인수 System.Linq.Enumerable.Contains (이 System.Collections.Generic.IEnumerable, TSource) '는 사용법에서 유추 할 수 없습니다. 명시 적으로 형식 인수를 지정하십시오. (CS0411)

+2

어떤 특정 오류 (들)는 점점을 : LocalOffer.CategoryIEnumerable<Category> 경우

return (from o in Table<LocalOffer>() where categories.Contains(o.CategoryId) select o) .Count(); 

그러나, 이것은 당신이 필요 아마? –

+0

왜 컴파일되지 않습니까? 오류가 무엇입니까? – AlexFoxGill

+0

"enum (ints) 목록 일 때"-> 실수 # 1. Enums! = ints. 그러나 컴파일을하지 않는다는 오류 만 게시하는 대신 대중에게 도움이 될 것입니다. 당신은 답을 빨리 얻을 수 있으며, 같은 문제가있는 사람들을 위해 검색 할 때 서비스를 제공 할 것입니다. (우리는 당신을 혼자 도울 수있는 곳이 아닙니다.) –

답변

4

내 생각에 LocalOffer.CategoryCategory (이름을 기반으로 함)입니다. 이 대신에보십시오 :

return 
    (from o in Table<LocalOffer>() 
    where o.Any(c => categories.Contains(c.CategoryId)) 
    select o) 
    .Count();