2

剣道コンボ ボックスに返されるデータをフィルタリングしようとしました。フィルタリングは ID に基づいています。等号だけでなくフィルタリング テキストを含むすべてのレコードを返す必要があるため、ID を次のように文字列にキャストしました。次のスニップ

Items = Mapper.Map<List<PurchaseOrder>, List<PurchaseOrderViewModel>>(
                purchaseOrderRepository.GetMany(x => 
                                                x.PurchaseOrderID
                                                 .ToString()
                                                 .Contains(text))
                                                 .ToList());

しかし、それは常にエンティティへの戻りlinqであり、メソッド 'system.string tostring()' を認識しません

そのため、別の投稿で見つけた where ステートメントの前に dbset をリストに変換しようとしました LINQ to Entities は MVC 4 のメソッド 'System.String ToString()' メソッドを認識しません が、別のエラーが発生しましたWhere の定義が含まれています (dbSet は IDbSet のインスタンスです)

public virtual IList<T> GetMany(Expression<Func<T, bool>> where)
{

    return dbset.ToList().Where(where).ToList();
}

これが私の元の(現在の)getメソッドです

sing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Entity;
using System.Data;
using System.Linq.Expressions;
using Spine.ERP.DataAccess.DbFirstDataAccess;
using Spine.ERP.DataModel.Helpers;
namespace Spine.ERP.DataAccess.Infrastructure
{
    public abstract class RepositoryBase<T> where T : class
    {

        private SSSDBEntities dataContext;

        private readonly IDbSet<T> dbset;

        protected RepositoryBase(IDatabaseFactory databaseFactory)
        {
            DatabaseFactory = databaseFactory;
            dbset = DataContext.Set<T>();
        }

       protected IDatabaseFactory DatabaseFactory
        {
            get;
            private set;
        }


        protected SSSDBEntities DataContext
        {
            get { return dataContext ?? (dataContext = DatabaseFactory.Get()); }
        }
    public virtual IQueryable<T> GetMany(Expression<Func<T, bool>> where)
        {
            return dbset.Where(where);
        }
  }
}

この問題を解決するために他にできることはありますか?

4

1 に答える 1