数据库中的我的日期字段保存在nvarchar(10)中。我希望将两个日期的对象放在一起 这是我的代码:
public bool SalesFactorIsExist(IFeeKindDTO inFeeKindDTO)
{
bool isExist = false;
int count = 0;
var context = new SabzNegar01Entities1();
try
{
count = (from p in context.tbl_SalesFactor_D
where p.tbl_SalesFactor_M.tbl_Customer.CustomerGroupCode == inFeeKindDTO.CustomerGroupCode && p.StockCode == inFeeKindDTO.StockCode && ConvertStringDate(p.tbl_SalesFactor_M.FactorSalesDate) >= ConvertStringDate(inFeeKindDTO.StartDate)
select new { p.Row }).Count();
if (count != 0)
{
isExist = true;
}
}
catch (Exception ex)
{
PMessageBox.Show("خطا در خواندن اطلاعات", "اخطار", PMessageBoxButtons.Ok, PMessageBoxIcons.Error);
}
return isExist;
}
我使用过这种方法:
private DateTime ConvertStringDate(string inDate)
{
DateTime result = DateTime.Parse(inDate);
return result;
}
但是有一个错误:
LINQ to Entities does not recognize the method 'System.DateTime ConvertStringDate(System.String)' method, and this method cannot be translated into a store expression.
我该怎么办? 还有另一种方式吗?
答案 0 :(得分:3)
您无法从实体查询中调用ConvertStringDate函数。
将初始列表拉到服务器,然后应用您的功能。
var list = context.tbl_SalesFactor_D.Where(p=> p.tbl_SalesFactor_M.tbl_Customer.CustomerGroupCode == inFeeKindDTO.CustomerGroupCode && p.StockCode == inFeeKindDTO.StockCode).ToList();
var count = list.Where(p=> ConvertStringDate(p.tbl_SalesFactor_M.FactorSalesDate) >= ConvertStringDate(inFeeKindDTO.StartDate)).Count();