Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从interface.System.Linq.IQueryable更改var<;out T>;对System.Collections.generic.List进行分类<;T>;_C# - Fatal编程技术网

C# 如何从interface.System.Linq.IQueryable更改var<;out T>;对System.Collections.generic.List进行分类<;T>;

C# 如何从interface.System.Linq.IQueryable更改var<;out T>;对System.Collections.generic.List进行分类<;T>;,c#,C#,我有以下代码: var allWorkorders = (from wo in context.WORKORDERs join wot in context.WORKORDERTYPEs on wo.wot_oi equals wot.wotyoi join pri in context.PRIORITies on wo.prio_oi equals pri.priooi join s in con

我有以下代码:

var allWorkorders =

            (from wo in context.WORKORDERs
            join wot in context.WORKORDERTYPEs on wo.wot_oi equals wot.wotyoi
            join pri in context.PRIORITies on wo.prio_oi equals pri.priooi
            join s in context.SITEs on wo.BEparn_oi equals s.siteoi
            where wo.audt_created_dttm.Value.Year >= now.Year - 3 && wo.audt_created_dttm.Value.Year >= 2006
                && wo.audt_created_dttm < timeframe && (s.id == "NM" || s.id == "TH") &&
                (wo.clsdt_date ?? new DateTime(3000, 01, 01)) < DateTime.Now
            group pri by new {s.id, pri.prioid, MonthNum = (wo.clsdt_date ?? new DateTime(3000, 01, 01)).Year * 100 +
                (wo.clsdt_date ?? new DateTime(3000, 01, 01)).Month} into groupItem
            orderby groupItem.Key.MonthNum, groupItem.Key.id
            select new {groupItem.Key.id, groupItem.Key.prioid, groupItem.Key.MonthNum, Unit = groupItem.Count()});

            allWorkorders.GroupBy(x => new { x.id, x.MonthNum }).Select(x => new {x.Key.id, x.Key.MonthNum,
            Denominator = x.Sum(y => y.Unit), Numerator = x.Where(y => SqlMethods.Like(y.prioid, "1%") || 
            SqlMethods.Like(y.prioid, "6%")).Sum(y => y.Unit), Data_Indicator = DATA_INDICATOR,
            Budgeted = budgetedPlannedOutageHrs, Industry_Benchmark = INDUSTRY_BENCHMARK,
            Comments = comments, Executive_Comments = executiveComments, 
            Fleet_Exec_Comments = fleetExecComments}).ToList();
var-allWorkorders=
(来自context.WORKORDERs中的wo)
在context.WORKORDERTYPEs中加入wot,在wo.wot_oi等于wot.wotyoi
在上下文中加入pri.PRIORITies on wo.prio_oi等于pri.priooi
在wo.BEparn_oi上的context.SITEs中加入s等于s.siteoi
其中wo.audt_created_dttm.Value.Year>=now.Year-3&&wo.audt_created_dttm.Value.Year>=2006
&&wo.audt|u dttm<时间范围&&(s.id==“NM”| s.id==“TH”)&&
(wo.clsdt_date??新日期时间(3000,01,01))new{x.id,x.MonthNum})。选择(x=>new{x.Key.id,x.Key.MonthNum,
分母=x.Sum(y=>y.Unit),分子=x.Where(y=>SqlMethods.Like(y.prioid,“1%”)|
SqlMethods.Like(y.prioid,“6%”).Sum(y=>y.Unit),Data\u Indicator=Data\u Indicator,
预算=预算计划工时,行业基准=行业基准,
注释=注释,执行注释=执行注释,
Fleet_Exec_Comments=fleetExecComments}).ToList();
我想创建一个for循环:

for (int counter = 0; counter < allWorkorders.Count; counter++)
{
    var item = allWorkorders[counter];
    ......
for(int counter=0;counter

但是,我得到了以下错误:“'您可以使用foreach循环,也可以将()添加到Count,
for(int counter=0;counter
。在这种情况下,Count不是一个属性,而是一个在IEnumerable上调用的Linq扩展方法,这就是为什么当您只给方法组
.Count
而不是调用方法
.Count()
时,它会抱怨方法组


另外,这里有两个单独的语句,并且似乎没有将执行
.ToList()
的部分存储在任何位置。

您可以使用foreach循环,也可以将()添加到Count,
for(int counter=0;counter
。在这种情况下,Count不是一个属性,而是一个在IEnumerable上调用的Linq扩展方法,这就是为什么当您只给方法组
.Count
而不是调用方法
.Count()
时,它会抱怨方法组

另外,这里有两个单独的语句,并且似乎没有将执行
.ToList()
的部分存储在任何位置。

ToList()返回一个结果。您需要

var newList = allWorkorders.GroupBy(x => ...).Select(x => ...).ToList();
ToList()返回一个结果

var newList = allWorkorders.GroupBy(x => ...).Select(x => ...).ToList();

它试图使用LINQ扩展方法
Count()
而不是
List.Count

它这样做的原因是您没有将
ToList()
的结果赋给任何对象。整个语句基本上被忽略,因为您没有使用返回值

allWorkorders.GroupBy(x => new { x.id, x.MonthNum }).Select(x => new {x.Key.id, x.Key.MonthNum,
Denominator = x.Sum(y => y.Unit), Numerator = x.Where(y => SqlMethods.Like(y.prioid, "1%") || 
SqlMethods.Like(y.prioid, "6%")).Sum(y => y.Unit), Data_Indicator = DATA_INDICATOR,
Budgeted = budgetedPlannedOutageHrs, Industry_Benchmark = INDUSTRY_BENCHMARK,
Comments = comments, Executive_Comments = executiveComments, 
Fleet_Exec_Comments = fleetExecComments}).ToList();

它试图使用LINQ扩展方法
Count()
而不是
List.Count

它这样做的原因是您没有将
ToList()
的结果赋给任何对象。整个语句基本上被忽略,因为您没有使用返回值

allWorkorders.GroupBy(x => new { x.id, x.MonthNum }).Select(x => new {x.Key.id, x.Key.MonthNum,
Denominator = x.Sum(y => y.Unit), Numerator = x.Where(y => SqlMethods.Like(y.prioid, "1%") || 
SqlMethods.Like(y.prioid, "6%")).Sum(y => y.Unit), Data_Indicator = DATA_INDICATOR,
Budgeted = budgetedPlannedOutageHrs, Industry_Benchmark = INDUSTRY_BENCHMARK,
Comments = comments, Executive_Comments = executiveComments, 
Fleet_Exec_Comments = fleetExecComments}).ToList();

您没有将第二行(带有ToList()的那一行)分配给任何内容。您以“Unit=groupItem.Count()}”结束了对所有工作订单的分配;"


删除ToList()将使其返回一个列表,但由于您没有将其分配给任何对象,因此它立即超出范围,您将丢失它。

您没有将第二行(带有ToList()的那一行)分配给任何对象。您以“Unit=groupItem.Count()”结束了对所有WorkOrder的分配;"


向托利斯脱口秀()将使其返回一个列表,但由于您没有将其分配给任何对象,因此它立即超出范围,您将丢失它。

您应该重新思考此代码。如果它非常复杂,以至于您没有看到结果没有分配给某个值,那么显然太复杂了@Panagiotis Kanavos:这并不是因为我不知道它没有分配给某个对象值。我错误地认为它被分配给了所有的工作顺序。这是我的观点。如果你不能很容易地看到这个,它可能太复杂了。我也没有看到这个,直到Resharper缩进code@ProgrammingNewbie不要在@和用户名之间加空格。@PanagiotisKanavos如果你看一下我答案上的评论,那不是OP没有看到分配没有发生,OP不知道分配是必需的。你应该重新思考这段代码。如果代码太复杂,以至于你没有看到结果没有分配给某个值,那么显然太复杂了@Panagiotis Kanavos:不是我不知道它没有分配给某个值。我错信了我的观点是,如果你不能很容易地看到这一点,它可能太复杂了。我也没有看到这一点,直到Resharper缩进code@ProgrammingNewbie不要在@和用户名之间加空格。@PanagiotisKanavos如果你看一下我答案上的评论,并不是OP没有看到as符号没有出现,OP不知道分配是必需的。@Brannon不,不,没有。请参见第二段。@Brannon不,不,没有。请参见第二段。@cadrell0:我明白了。我错误地认为allWorkorders.GroupBy代码被分配给了allWorkorders。一旦我为该代码创建了一个新的var数据类型,它就工作了e、 我想我不明白为什么