【发布时间】:2012-08-09 22:16:30
【问题描述】:
我可以在 LINQ 的 where 子句中调用方法,或者如何添加条件以仅显示现有文件?
目标:显示服务器上存在的文档列表
查询:
var query = from d in dtContext.documents
where FileExists(d.Id, d.Path) == true
select d;
方法:
Private bool FileExists (int ID, string Path)
{
if(File. Exists(Server.MapPath(Path))
return true
else
{
using (Model.DataContext dt = new Model.DataContext())
{
var vDoc = dt.Documents.Where(x => x.DocumentId == ID).FirstOrDefault();
vDoc.Status = false;
dt.SubmitChanges();
}
return false;
}
}
【问题讨论】:
-
您的问题令人困惑。您是在问“如何在 where 子句中添加条件以仅显示现有文件?”
-
什么不起作用?除了验证文件
dt.SubmitChanges()之外,还查看文件出口中的 else 分支看起来像是在做其他工作?这可能是个问题 -
你为什么要在数据库中寻找文件存在?
-
问题是LINQ不识别这些方法,(想翻译成SQL)我得到的问题与真正的问题无关,通过使DataBind()获取DataGrid错误页面(其中工作正常)
-
除了您的方法中明显的设计缺陷之外,您在示例中的查询看起来应该像我期望的那样工作。
标签: c# asp.net linq methods .net-3.5