首页 / C# / 从方法返回LINQ数据库查询
从方法返回LINQ数据库查询
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了从方法返回LINQ数据库查询,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2602字,纯文字阅读大概需要4分钟。
内容图文
![从方法返回LINQ数据库查询](/upload/InfoBanner/zyjiaocheng/886/4e2feeb305254547aa349f2769b8baec.jpg)
大家好,我在多个地方执行此查询.而不是一遍又一遍地重新键入查询,我希望能够调用一个返回查询的方法.我不确定该方法的返回类型应该输入什么,甚至不确定是否可以这样做.我使用查询写入信息的csv文件,并使用查询将项目添加到绑定到列表视图的可观察集合中.
using (ProjectTrackingDBEntities context = new ProjectTrackingDBEntities())
{
var result = context.TimeEntries.Where(Entry => Entry.Date >= FilterProjectAfterDate
&& Entry.Date <= FilterProjectBeforerDate
&& (FilterProjectName != null ? Entry.ProjectName.Contains(FilterProjectName) : true))
.GroupBy(m => new { m.ProjectName, m.Phase })
.Join(context.Projects, m => new { m.Key.ProjectName, m.Key.Phase }, w => new { w.ProjectName, w.Phase }, (m, w) => new { te = m, proj = w })
.Select(m => new
{
Name = m.te.Key.ProjectName,
Phase = m.te.Key.Phase,
TimeWorked = m.te.Sum(w => w.TimeWorked),
ProposedCompletionDate = m.proj.ProposedCompletionDate,
ActualCompletionDate = m.proj.ActualCompletionDate,
Active = m.proj.Active,
StartDate = m.proj.StartDate,
Description = m.proj.Description,
EstimatedHours = m.proj.EstimatedHours
});
}
现在,我可以通过重新键入查询并在数据上执行随后的foreach()循环来完成这两项工作.我宁愿能够执行以下操作:
var ReturnedQuery = GetProjectsQuery();
foreach(var item in ReturnedQuery)
{
//do stuff
}
任何帮助,将不胜感激.
解决方法:
您想返回IQueryable< T>使用一个已知模型来表示您要返回的内容.您不应该返回匿名类型.另外,您还希望传递DbContext,以便可以由调用方处理它,而不是在方法中进行处理,否则您将收到DbContext已被处理的异常.
例如:
public IQueryable<ProjectModel> GetProjectQuery(ProjectTrackingDBEntities context) {
return context.TimeEntries.Where(Entry => Entry.Date >= FilterProjectAfterDate
&& Entry.Date <= FilterProjectBeforerDate
&& (FilterProjectName != null ? Entry.ProjectName.Contains(FilterProjectName) : true))
.GroupBy(m => new { m.ProjectName, m.Phase })
.Join(context.Projects, m => new { m.Key.ProjectName, m.Key.Phase }, w => new { w.ProjectName, w.Phase }, (m, w) => new { te = m, proj = w })
.Select(m => new ProjectModel
{
Name = m.te.Key.ProjectName,
Phase = m.te.Key.Phase,
TimeWorked = m.te.Sum(w => w.TimeWorked),
ProposedCompletionDate = m.proj.ProposedCompletionDate,
ActualCompletionDate = m.proj.ActualCompletionDate,
Active = m.proj.Active,
StartDate = m.proj.StartDate,
Description = m.proj.Description,
EstimatedHours = m.proj.EstimatedHours
});
}
ProjectModel.cs
public class ProjectModel {
public string Name {get;set;}
public string Phase {get;set;}
// rest of properties
}
呼叫码
using (ProjectTrackingDBEntities context = new ProjectTrackingDBEntities())
{
var ReturnedQuery = GetProjectsQuery(context);
foreach(var item in ReturnedQuery)
{
//do stuff
}
}
内容总结
以上是互联网集市为您收集整理的从方法返回LINQ数据库查询全部内容,希望文章能够帮你解决从方法返回LINQ数据库查询所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。