0

where 句 " _list.Where<T>(whereClause) "で 3 つのエラーに直面しています。どうすれば解決できますか?

エラー 1
'System.Collections.Generic.List<FuncMetodunuTaniyalim3.DataModel.Customer>' には 'Where' の定義と最適な拡張メソッド オーバーロード 'System.Linq.ParallelEnumerable.Where<TSource>(System.Linq.ParallelQuery) が含まれていません<TSource>, System.Func<TSource,int,bool>)' に無効な引数があります
エラー 2インスタンス引数: 'System.Collections.Generic.List<FuncMetodunuTaniyalim3.DataModel.Customer>' から 'System.Linq. ParallelQuery<T>'
エラー 3引数 2: 'System.Func<T,bool>' から 'System.Func<T,int,bool>' に変換できません


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace FuncMetodunuTaniyalim3
{
    public class Search<T> where T : class
    {
         private  List<DataModel.Customer> _list;

         public Search()
         {
             _list = new List<DataModel.Customer>();
         }
        public int Find(Func<T, bool> whereClause)
        {
            return _list.IndexOf(_list.Where<T>(whereClause).FirstOrDefault<T>());
        }
    }

    //Repository
    public class DataModel
    {
        private IEnumerable<Customer> customers;

        public List<Customer> Customers
        {
            get { return customers.ToList(); }

        }


        public DataModel()
        {
            customers = new[] { new Customer(){ Id=1, Name="cbfghg", SurName="hfh", Age=29, Dept=0, Income=100},
                                new Customer(){ Id=2, Name="hfghfhf", SurName="erhfghfhfhem", Age=0,Dept=45, Income=300},
                                new Customer(){ Id=3, Name="hgfhgfhf", SurName="balhfghgfhfgh", Age=33, Dept=20, Income=150}};
        }

        //Model
        public class Customer
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public string SurName { get; set; }
            public int Age { get; set; }
            public int Income { get; set; }
            public int Dept { get; set; }

            public Customer()
            {

            }
        }
    }
}

4

3 に答える 3

2

リストはですが、List<DataModel.Customer>述語はFunc<T, bool>です。述語のタイプをにFunc<DataModel.Customer, bool>変更するか、リストタイプをに変更しますList<T>

于 2012-11-22T13:32:18.087 に答える
1

Search クラスにはList<Customer>. おそらくあなたは使用するつもりでしたList<T>

public class Search<T> where T : class
{
    private List<T> _list;

    public Search()
    {
        _list = new List<T>();
    }
    public int Find(Func<T, bool> whereClause)
    {
        return _list.IndexOf(_list.Where<T>(whereClause).FirstOrDefault<T>());
    }
}
于 2012-11-22T13:33:34.357 に答える
0

メソッドのドキュメントを参照してください:http://msdn.microsoft.com/en-us/library/bb534803.aspxたぶん、そこに_listが必要List<DataModel.Customer>ですか?IEnumerable<DataModel.Customer>List<T>

于 2012-11-22T13:31:14.083 に答える