我是LINQ的新手,但我想知道是否可以使用LINQ从以下布局转移数据:
CustID | OrderDate | Qty
1 | 1/1/2008 | 100
2 | 1/2/2008 | 200
1 | 2/2/2008 | 350
2 | 2/28/2008 | 221
1 | 3/12/2008 | 250
2 | 3/15/2008 | 2150
Run Code Online (Sandbox Code Playgroud)
进入这样的事情:
CustID | Jan- 2008 | Feb- 2008 | Mar - 2008 |
1 | 100 | 350 | 250
2 | 200 | 221 | 2150
Run Code Online (Sandbox Code Playgroud) 我有以下动态列表
Crew NameSurname Period Result
ABC John DOE Q1 54,09
ABC John DOE Q2 59,57
ABC John DOE Q3 62,11
Run Code Online (Sandbox Code Playgroud)
如何在linq中获得此结果.
Crew NameSurname Q1 Q2 Q3
ABC John DOE 47,51 47,51 51,46
Run Code Online (Sandbox Code Playgroud)
我试过这种方式,但我无法得到结果
List.GroupBy(c => c.PersonnelID)
.Select(g => new
{
PersonnelID = g.Key,
Period1 = g.Where(c => c.Period == 1).Sum(c => c.Result),
Period2 = g.Where(c => c.Period == 2).Sum(c => c.Result),
Period3 = g.Where(c => c.Period == 3).Sum(c => c.Result)
});
Run Code Online (Sandbox Code Playgroud) 我正在使用LINQ-to-Entities,并希望执行一个支点.
例如,我有这个表:
| data1 | data2 |
+-------+-------+
| 1 | A |
| 1 | B |
| 2 | P |
| 2 | Q |
| 2 | R |
+---------------+
Run Code Online (Sandbox Code Playgroud)
我想将其转换为以下结果:
| data1 | first | second | third |
+-------+-------+--------+-------+
| 1 | A | B | NULL |
| 2 | P | Q | R |
+--------------------------------+
Run Code Online (Sandbox Code Playgroud)
我想在LINQ中执行此操作,而无需进行客户端处理.
我看过这些SO帖子,但是他们并没有完全解决上述情况(据我所知).
注意
我曾尝试以下,但它抱怨说,我不能在一个无序的集合使用跳过(),我没有看到一个办法让该集团的崩溃"数据2"信息进行排序.
from item in MyTable
group item by item.data1 into g …Run Code Online (Sandbox Code Playgroud) 我有一个MyBugList使用以下类创建的错误列表
internal class BugDetails
{
public int Id { get; set; }
public string State { get; set; }
public string Severity { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想基于State和分组这些错误Severity.我使用以下代码来实现它.
var BugListGroup = (from bug in MyBugList
group bug by new
{
bug.State,
bug.Severity
} into grp
select new
{
BugState = grp.Key.State,
BugSeverity = grp.Key.Severity,
BugCount = grp.Count()
}).OrderBy(x=> x.BugState).ToList();
Run Code Online (Sandbox Code Playgroud)
这个linq查询给出了如下输出
Closed Critical 40
Active Critical 167
Closed Medium 819
Closed Low 323
Resolved Medium …Run Code Online (Sandbox Code Playgroud) 我有以下类结构:
public class TaskLog
{
public DateTime LogDate { get; set; }
public string Robot { get; set; }
public string Task { get; set; }
public Enums.ProbeDataState State { get; set; }
public TaskLog()
{
}
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个通用列表如下:
List<TaskLog> Logs;
Run Code Online (Sandbox Code Playgroud)
我的输出:
Robot Date State
---------------------------------------------
aaa 8/5/2013 12:00:00 AM Task:1=fileDeltaFailed
aaa 8/5/2013 12:00:00 AM Task:2=fileDeltaFailed
aaa 8/5/2013 12:00:00 AM Task:4=fileDeltaFailed
bbb 8/5/2013 12:00:00 AM Task:1=fileDeltaFailed
bbb 8/5/2013 12:00:00 AM Task:2=fileDeltaFailed
bbb 8/5/2013 12:00:00 AM Task:4=fileDeltaFailed
Run Code Online (Sandbox Code Playgroud)
但是,我想将任务分组并说明如下:
Tasks
Robot Date …Run Code Online (Sandbox Code Playgroud) 我有一个具有以下结构的列表,
TimeStamp Name Value
---------------------------------------
01/May/2018 Prop1 5
07/May/2018 Prop1 9
01/May/2018 Prop2 8
07/May/2018 Prop2 11
01/May/2018 Prop3 18
07/May/2018 Prop3 7
.....................................................
......................................................
07/May/2018 Prop(N) (N)Value
Run Code Online (Sandbox Code Playgroud)
我正在尝试将其旋转/转换为以下结构,
TimeStamp Prop1 Prop2 Prop3 .... PropN Value
---------------------------------------------------------------------------------------------
01/May/2018 5 8 18 (N)th Value 31+(N)th Value
07/May/2018 9 11 7 (N)th Value 27+(N)th Value
Run Code Online (Sandbox Code Playgroud)
编辑: 实际上,该列表非常大,可以有 100 个名称,并且在将其加载到内存中之前不会知道这些值。因此,不可能检查@TheGeneral 提到的名称,但如果我们的值集有限并且我们事先知道它们,它就可以工作。
我尝试使用 grouping 来执行此操作,但这可能不是方法。
var pivotList= customersList.GroupBy(cust => new { cust.Name, cust.Timestamp, cust.Value }).Select(x => new {
TimeStamp = x.Key.Timestamp,
Circuit = x.Key.Name, …Run Code Online (Sandbox Code Playgroud)