Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/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# 在C中将嵌套的foreach转换为Linq#_C#_Linq - Fatal编程技术网

C# 在C中将嵌套的foreach转换为Linq#

C# 在C中将嵌套的foreach转换为Linq#,c#,linq,C#,Linq,如何将此代码段转换为一个Linq? (我想删除foreach) var resultList=newlist(); var query=dataList.GroupBy(x=>new{x.pruefdatam,x.Plakettenjahr}); foreach(查询中的var q) { 项目温度=新项目(); foreach(q中的项目) { 开关(Plakart项目) { “胡”案: 温度HU=项目Anzahl; 打破 案例“SP”: 温度SP=项目Anzahl; 打破 } } 温度Prue

如何将此代码段转换为一个
Linq
? (我想删除foreach)

var resultList=newlist();
var query=dataList.GroupBy(x=>new{x.pruefdatam,x.Plakettenjahr});
foreach(查询中的var q)
{
项目温度=新项目();
foreach(q中的项目)
{
开关(Plakart项目)
{
“胡”案:
温度HU=项目Anzahl;
打破
案例“SP”:
温度SP=项目Anzahl;
打破
}
}
温度Pruefdatum=q.Last().Pruefdatum;
温度Plakettenjahr=q.Last().Plakettenjahr;
结果列表添加(临时);
}
var result=resultList;
数据:

public static List<Item> dataList = new List<Item>()
{
    new Item{Pruefdatum = DateTime.Parse("2019-02-13 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 0, SP = 0, Anzahl =6 }, //0
    new Item{Pruefdatum = DateTime.Parse("2019-02-13 00:00:00"), Plakettenjahr = "21", Plakart = "SP", HU = 0, SP = 0, Anzahl =1 }, //1
    new Item{Pruefdatum = DateTime.Parse("2019-02-15 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 0, SP = 0, Anzahl =1 }, //2
    new Item{Pruefdatum = DateTime.Parse("2019-02-15 00:00:00"), Plakettenjahr = "21", Plakart = "SP", HU = 0, SP = 0, Anzahl =2 }, //3
    new Item{Pruefdatum = DateTime.Parse("2019-02-18 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 0, SP = 0, Anzahl =3 }, //4
    new Item{Pruefdatum = DateTime.Parse("2019-02-18 00:00:00"), Plakettenjahr = "21", Plakart = "SP", HU = 0, SP = 0, Anzahl =1 }, //5
    new Item{Pruefdatum = DateTime.Parse("2019-02-20 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 0, SP = 0, Anzahl =6 }, //6
    new Item{Pruefdatum = DateTime.Parse("2019-02-21 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 0, SP = 0, Anzahl =2 }, //7
    new Item{Pruefdatum = DateTime.Parse("2019-02-22 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 0, SP = 0, Anzahl =8 }, //8
    new Item{Pruefdatum = DateTime.Parse("2019-02-25 00:00:00"), Plakettenjahr = "20", Plakart = "HU", HU = 0, SP = 0, Anzahl =2 }, //9
    new Item{Pruefdatum = DateTime.Parse("2019-02-25 00:00:00"), Plakettenjahr = "20", Plakart = "SP", HU = 0, SP = 0, Anzahl =7 }, //10
    new Item{Pruefdatum = DateTime.Parse("2019-02-25 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 0, SP = 0, Anzahl =9 }, //11
    new Item{Pruefdatum = DateTime.Parse("2019-02-28 00:00:00"), Plakettenjahr = "20", Plakart = "SP", HU = 0, SP = 0, Anzahl =1 }, //12
    new Item{Pruefdatum = DateTime.Parse("2019-02-28 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 0, SP = 0, Anzahl =5 }, //13
};
public static List<Item> result = new List<Item>()
{
    new Item{Pruefdatum = DateTime.Parse("2019-02-13 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 6, SP = 1}, //0
    new Item{Pruefdatum = DateTime.Parse("2019-02-15 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 1, SP = 2}, //1
    new Item{Pruefdatum = DateTime.Parse("2019-02-18 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 3, SP = 1}, //2
    new Item{Pruefdatum = DateTime.Parse("2019-02-20 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 6, SP = 0}, //3
    new Item{Pruefdatum = DateTime.Parse("2019-02-21 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 2, SP = 0}, //4
    new Item{Pruefdatum = DateTime.Parse("2019-02-22 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 8, SP = 0}, //5
    new Item{Pruefdatum = DateTime.Parse("2019-02-25 00:00:00"), Plakettenjahr = "20", Plakart = "HU", HU = 2, SP = 7}, //6
    new Item{Pruefdatum = DateTime.Parse("2019-02-25 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 9, SP = 0}, //7
    new Item{Pruefdatum = DateTime.Parse("2019-02-28 00:00:00"), Plakettenjahr = "20", Plakart = "SP", HU = 0, SP = 1}, //8
    new Item{Pruefdatum = DateTime.Parse("2019-02-28 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 5, SP = 0} //9
};
publicstaticlist dataList=newlist()
{
新项目{pruefdatam=DateTime.Parse(“2019-02-13 00:00:00”),Plakettenjahr=“21”,Plakart=“HU”,HU=0,SP=0,Anzahl=6},//0
新项目{pruefdatam=DateTime.Parse(“2019-02-13 00:00:00”),Plakettenjahr=“21”,Plakart=“SP”,HU=0,SP=0,Anzahl=1},//1
新项目{pruefdatam=DateTime.Parse(“2019-02-15 00:00:00”),Plakettenjahr=“21”,Plakart=“HU”,HU=0,SP=0,Anzahl=1},//2
新项目{pruefdatam=DateTime.Parse(“2019-02-15 00:00:00”),Plakettenjahr=“21”,Plakart=“SP”,HU=0,SP=0,Anzahl=2},//3
新项目{pruefdatam=DateTime.Parse(“2019-02-18 00:00:00”),Plakettenjahr=“21”,Plakart=“HU”,HU=0,SP=0,Anzahl=3},//4
新项目{pruefdatam=DateTime.Parse(“2019-02-18 00:00:00”),Plakettenjahr=“21”,Plakart=“SP”,HU=0,SP=0,Anzahl=1},//5
新项目{pruefdatam=DateTime.Parse(“2019-02-20 00:00:00”),Plakettenjahr=“21”,Plakart=“HU”,HU=0,SP=0,Anzahl=6},//6
新项目{pruefdatam=DateTime.Parse(“2019-02-21 00:00:00”),Plakettenjahr=“21”,Plakart=“HU”,HU=0,SP=0,Anzahl=2},//7
新项目{pruefdatam=DateTime.Parse(“2019-02-22 00:00:00”),Plakettenjahr=“21”,Plakart=“HU”,HU=0,SP=0,Anzahl=8},//8
新项目{pruefdatam=DateTime.Parse(“2019-02-25 00:00:00”),Plakettenjahr=“20”,Plakart=“HU”,HU=0,SP=0,Anzahl=2},//9
新项目{pruefdatam=DateTime.Parse(“2019-02-25 00:00:00”),Plakettenjahr=“20”,Plakart=“SP”,HU=0,SP=0,Anzahl=7},//10
新项目{pruefdatam=DateTime.Parse(“2019-02-25 00:00:00”),Plakettenjahr=“21”,Plakart=“HU”,HU=0,SP=0,Anzahl=9},//11
新项目{pruefdatam=DateTime.Parse(“2019-02-28 00:00:00”),Plakettenjahr=“20”,Plakart=“SP”,HU=0,SP=0,Anzahl=1},//12
新项目{pruefdatam=DateTime.Parse(“2019-02-28 00:00:00”),Plakettenjahr=“21”,Plakart=“HU”,HU=0,SP=0,Anzahl=5},//13
};
结果:

public static List<Item> dataList = new List<Item>()
{
    new Item{Pruefdatum = DateTime.Parse("2019-02-13 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 0, SP = 0, Anzahl =6 }, //0
    new Item{Pruefdatum = DateTime.Parse("2019-02-13 00:00:00"), Plakettenjahr = "21", Plakart = "SP", HU = 0, SP = 0, Anzahl =1 }, //1
    new Item{Pruefdatum = DateTime.Parse("2019-02-15 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 0, SP = 0, Anzahl =1 }, //2
    new Item{Pruefdatum = DateTime.Parse("2019-02-15 00:00:00"), Plakettenjahr = "21", Plakart = "SP", HU = 0, SP = 0, Anzahl =2 }, //3
    new Item{Pruefdatum = DateTime.Parse("2019-02-18 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 0, SP = 0, Anzahl =3 }, //4
    new Item{Pruefdatum = DateTime.Parse("2019-02-18 00:00:00"), Plakettenjahr = "21", Plakart = "SP", HU = 0, SP = 0, Anzahl =1 }, //5
    new Item{Pruefdatum = DateTime.Parse("2019-02-20 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 0, SP = 0, Anzahl =6 }, //6
    new Item{Pruefdatum = DateTime.Parse("2019-02-21 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 0, SP = 0, Anzahl =2 }, //7
    new Item{Pruefdatum = DateTime.Parse("2019-02-22 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 0, SP = 0, Anzahl =8 }, //8
    new Item{Pruefdatum = DateTime.Parse("2019-02-25 00:00:00"), Plakettenjahr = "20", Plakart = "HU", HU = 0, SP = 0, Anzahl =2 }, //9
    new Item{Pruefdatum = DateTime.Parse("2019-02-25 00:00:00"), Plakettenjahr = "20", Plakart = "SP", HU = 0, SP = 0, Anzahl =7 }, //10
    new Item{Pruefdatum = DateTime.Parse("2019-02-25 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 0, SP = 0, Anzahl =9 }, //11
    new Item{Pruefdatum = DateTime.Parse("2019-02-28 00:00:00"), Plakettenjahr = "20", Plakart = "SP", HU = 0, SP = 0, Anzahl =1 }, //12
    new Item{Pruefdatum = DateTime.Parse("2019-02-28 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 0, SP = 0, Anzahl =5 }, //13
};
public static List<Item> result = new List<Item>()
{
    new Item{Pruefdatum = DateTime.Parse("2019-02-13 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 6, SP = 1}, //0
    new Item{Pruefdatum = DateTime.Parse("2019-02-15 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 1, SP = 2}, //1
    new Item{Pruefdatum = DateTime.Parse("2019-02-18 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 3, SP = 1}, //2
    new Item{Pruefdatum = DateTime.Parse("2019-02-20 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 6, SP = 0}, //3
    new Item{Pruefdatum = DateTime.Parse("2019-02-21 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 2, SP = 0}, //4
    new Item{Pruefdatum = DateTime.Parse("2019-02-22 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 8, SP = 0}, //5
    new Item{Pruefdatum = DateTime.Parse("2019-02-25 00:00:00"), Plakettenjahr = "20", Plakart = "HU", HU = 2, SP = 7}, //6
    new Item{Pruefdatum = DateTime.Parse("2019-02-25 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 9, SP = 0}, //7
    new Item{Pruefdatum = DateTime.Parse("2019-02-28 00:00:00"), Plakettenjahr = "20", Plakart = "SP", HU = 0, SP = 1}, //8
    new Item{Pruefdatum = DateTime.Parse("2019-02-28 00:00:00"), Plakettenjahr = "21", Plakart = "HU", HU = 5, SP = 0} //9
};
公共静态列表结果=新列表()
{
新项{pruefdatam=DateTime.Parse(“2019-02-13 00:00:00”),Plakettenjahr=“21”,Plakart=“HU”,HU=6,SP=1},//0
新项{pruefdatam=DateTime.Parse(“2019-02-15 00:00:00”),Plakettenjahr=“21”,Plakart=“HU”,HU=1,SP=2},//1
新项{pruefdatam=DateTime.Parse(“2019-02-18 00:00:00”),Plakettenjahr=“21”,Plakart=“HU”,HU=3,SP=1},//2
新项目{pruefdatam=DateTime.Parse(“2019-02-20 00:00:00”),Plakettenjahr=“21”,Plakart=“HU”,HU=6,SP=0},//3
新项{pruefdatam=DateTime.Parse(“2019-02-21 00:00:00”),Plakettenjahr=“21”,Plakart=“HU”,HU=2,SP=0},//4
新项{pruefdatam=DateTime.Parse(“2019-02-22 00:00:00”),Plakettenjahr=“21”,Plakart=“HU”,HU=8,SP=0},//5
新项{pruefdatam=DateTime.Parse(“2019-02-25 00:00:00”),Plakettenjahr=“20”,Plakart=“HU”,HU=2,SP=7},//6
新项目{pruefdatam=DateTime.Parse(“2019-02-25 00:00:00”),Plakettenjahr=“21”,Plakart=“HU”,HU=9,SP=0},//7
新项{pruefdatam=DateTime.Parse(“2019-02-28 00:00:00”),Plakettenjahr=“20”,Plakart=“SP”,HU=0,SP=1},//8
新项目{pruefdatam=DateTime.Parse(“2019-02-28 00:00:00”),Plakettenjahr=“21”,Plakart=“HU”,HU=5,SP=0}//9
};
类似这样的东西

    dataList
        .GroupBy(x => new { x.Pruefdatum, x.Plakettenjahr })
        .Select(x => new Item()
        {
            Pruefdatum = x.Key.Pruefdatum,
            Plakettenjahr = x.Key.Plakettenjahr,
            HU = x.FirstOrDefault(y => y.Plakart == "HU")?.Anzahl ?? 0,
            SP = x.FirstOrDefault(y => y.Plakart == "SP")?.Anzahl ?? 0,
        });
编辑:我错过了
Plakart
字段,但它也不清楚是什么决定了原始示例中的值(
temp
从未分配
Plakart
)。在这种情况下,我上面的清单产生的结果与原始代码清单完全相同,尽管这与声称是结果的清单不匹配

另外,我使用的是
Key
而不是
Last()。这意味着,第一个或最后一个或任何,真的,都不会有变化。如果排序顺序很重要,则始终可以将
调回
Last()

现在,根据结果数据集,我可以遵循的唯一确定
Plakart
值的规则是if HU>0,然后HU else SP,这将导致将其添加到我的select子句中:

            Plakart = x.Any(y => y.Plakart == "HU" && y.Anzahl > 0) ? "HU" : "SP",

为什么要删除foreach?对我来说,你的代码似乎非常简单,我怀疑你能把它弄得更干净——特别是不使用LINQ,它用于查询,不更新集合中的项目。我想知道,没有foreach我怎么能做到这一点。是否可能?首先,缓存
q.Last()
。没有foreach,您无法完成此操作,您必须迭代查询返回的项目并更新它们。