【发布时间】:2013-11-11 09:03:03
【问题描述】:
我尝试过滤返回剑道组合框的数据,过滤是基于ID的, 我需要返回包含过滤文本的所有记录,而不仅仅是等于一个,所以我所做的是将 ID 转换为字符串,如下所示
Items = Mapper.Map<List<PurchaseOrder>, List<PurchaseOrderViewModel>>(
purchaseOrderRepository.GetMany(x =>
x.PurchaseOrderID
.ToString()
.Contains(text))
.ToList());
但它总是返回 linq to entity 无法识别方法“system.string tostring()”
所以我尝试将 dbset 转换为 where 语句之前的列表,正如我在另一篇文章中发现的那样 LINQ to Entities does not recognize the method 'System.String ToString()' method in MVC 4 但我得到另一个错误说该列表不包含 Where (dbSet is an instance of IDbSet) 的定义
public virtual IList<T> GetMany(Expression<Func<T, bool>> where)
{
return dbset.ToList().Where(where).ToList();
}
这是我的原始(当前)获取方法
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);
}
}
}
我还能做些什么来解决这个问题?
【问题讨论】:
标签: c# asp.net-mvc linq entity-framework