2

保存されたアイテムの値がリスト内の値のいずれかと一致するアイテムを検索するlinqを作成しようとしています-文字列のリストで文字列を検索する場合は簡単にこれを行うことができますが、リストの場合は列挙型(ints)の私はそれを理解することはできません。

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にはさまざまなアイテムが含まれています。「Category」アイテムは、1から10までのLocalCategory列挙型です。

私が得ているコンパイルエラーは-

メソッド`System.Linq.Enumerable.Contains(this System.Collections.Generic.IEnumerable、TSource)'の型引数は、使用法から推測できません。タイプ引数を明示的に指定してみてください(CS0411)

4

1 に答える 1

5

私の推測では、それは(名前に基づいて)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();
于 2013-03-25T18:18:48.553 に答える