2013-03-25 46 views
1

我正在嘗試編寫一些LINQ,用於搜索存儲的項目中的值與列表中的任何值匹配的項目 - 如果它是一個字符串列表&搜索一個字符串,但是當它是一個枚舉(整數)列表我無法弄清楚。LINQ包含數組中的(int)項

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的包含各種項目, 「類別」 項目是一個LocalCategory枚舉從1開始將10

我得到的編譯錯誤是 -

方法的類型參數`System.Linq.Enumerable.Contains(this System.Collections.Generic.IEnumerable,TSource)'不能從用法中推斷出來。嘗試明確指定類型參數(CS0411)

+2

什麼具體的錯誤(S)你好嗎? – 2013-03-25 17:39:40

+0

爲什麼不編譯?什麼是錯誤? – AlexFoxGill 2013-03-25 17:40:16

+0

「當它是一個枚舉(整數)列表」 - >錯誤#1。枚舉!=整數。但如果你真的發佈了這個錯誤,而不是僅僅說明它不會編譯,它將會對大衆有所幫助。你很可能會得到更快的答案,並且當你搜索它時,你會爲那些有同樣問題的人提供服務(我們不是在這裏幫助你*)。 – 2013-03-25 17:40:39

回答

4

我的猜測是LocalOffer.Category是單個Category(基於名稱)。試試這個:

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

然而,如果LocalOffer.Category是一個IEnumerable<Category>,這可能是你需要的東西:

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