C# 转换为IQueryable结果集
我们返回C# 转换为IQueryable结果集,c#,.net,linq,C#,.net,Linq,我们返回completedFilters。选择(GetFilterDetailDril) 我们在GetFilterDetailDril中有非常复杂的逻辑,它调用了很多函数。 在没有调用函数的情况下,我们不可能在行中写入所有这些内容。问题是我们希望稍后导出它,我们应该知道它是可查询的。 但是如果我们调用函数,c#就不能再让它可查询了。 有解决办法吗 这就是我的回报 return filtersInDevelopment.Select(GetFilterDetailDrillDownModel)
completedFilters。选择(GetFilterDetailDril)
我们在GetFilterDetailDril
中有非常复杂的逻辑,它调用了很多函数。
在没有调用函数的情况下,我们不可能在行中写入所有这些内容。问题是我们希望稍后导出它,我们应该知道它是可查询的。
但是如果我们调用函数,c#就不能再让它可查询了。
有解决办法吗
这就是我的回报
return filtersInDevelopment.Select(GetFilterDetailDrillDownModel)
这就是函数
private FilterDevDetailDrillDownModel GetFilterDetailDrillDownModel(ALFilters alFilters)
{
alFilters = (alFilters.IsSample == 1 && alFilters.DestFilters.FirstOrDefault() != null)
? alFilters.DestFilters.FirstOrDefault() : alFilters;
var alFiltersDevelopment = alFilters.AlFiltersDevelopment.FirstOrDefault();
if (alFiltersDevelopment != null)
{
var repository = new FilterRepository();
var adt = alFiltersDevelopment.Adt ?? repository.GetAdt(alFilters);
var edt = alFiltersDevelopment.Edt ?? repository.GetEdt(alFilters);
var filterActiveMilestone = alFilters.FilterActiveMilestone;
var milestoneTargetDate = (filterActiveMilestone != null)
? filterActiveMilestone.TargetDate
: repository.GetFilterActiveMilestoneTargetDate(alFilters);
var firstDevMilestone = alFilters.FilterMilestones.FirstOrDefault(
x => x.MilestoneTypeId == FilterConst.START_DEVELOPMENT_MILESTONE);
var startDevTime = (firstDevMilestone != null)
? firstDevMilestone.MilestoneDate
: (DateTime?) null;
string milestoneNmae = (filterActiveMilestone != null)
? filterActiveMilestone.dic_MilestoneTypes.NameForReport
: string.Empty;
double remainingMilestoneTime = (milestoneTargetDate.HasValue)
? milestoneTargetDate.Value.Subtract(DateTime.Now).Days
: 0;
double delayedTime = (edt != null && adt != null)
? adt.Value.Subtract(edt.Value).Days
: 0 ;
var site = db.dic_AL_Sites.Find(alFilters.SiteId);
return new FilterDevDetailDrillDownModel
{
FilterId = alFilters.ID,
Filter = alFilters.FilterCode,
StartDevDate = startDevTime,
MilelstoneName = milestoneNmae,
RemainingMilestoneTime = remainingMilestoneTime,
MilestoneEstimatedFinishDate = milestoneTargetDate,
EstimatedDevelopmentTime = alFiltersDevelopment.Edt,
DelayedTime = delayedTime,
Site = (site != null) ? site.Site_Name : string.Empty
};
}
return null;
}
很多逻辑。。。
我想要可查询的返回,但此filtersInDevelopment不可查询。Select(GetFilterDetailDrillDownModel)是可枚举的,不可能看到查询:(实现
IEnumerable
接口的类型可以通过调用AsQueryable
扩展方法转换为可查询的
:
还有一种非通用的等价物:
这么多编辑没有一个答案?请添加更多代码和有效信息,让我们了解您的要求。use.AsQueryable()最后。但我可以稍后导出它吗?当我用鼠标单击它或添加quick warch时,我看不到转换后的查询。就像在iqueriable中选择bla bla bla bla..什么查询?表达式树?我想这里有些信息你没有告诉我们。你的LINQ语句是作用于纯CLR对象,还是访问Entity框架上下文,或NHibernate,或……?如果您不让我们猜测,我们会更容易提供帮助。将问题与所有内容一起编辑