Pau*_*ews 5 .net c# sql linq count
我有一个简单的SQL查询:
Select ID, COUNT(ID) as Selections, OptionName, SUM(Units) as Units
FROM tbl_Results
GROUP BY ID, OptionName
Run Code Online (Sandbox Code Playgroud)
我得到的结果是:
'1' '4' 'Approved' '40'
'2' '1' 'Rejected' '19'
'3' '2' 'Not Decided' '12'
Run Code Online (Sandbox Code Playgroud)
我必须加密数据库中的数据,因此无法以关系形式对数据求和.为了解决这个问题,我解密了应用程序层中的数据,并希望使用LINQ在那里进行查询.我需要以下结果:
'1' 'Approved' '10'
'3' 'Not Deceided' '6'
'2' 'Rejected' '19'
'1' 'Approved' '15'
'1' 'Approved' '5'
'3' 'Not Deceided' '6'
'1' 'Approved' '10'
Run Code Online (Sandbox Code Playgroud)
我将这些结果放入类中并创建一个强类型列表:
public class results
{
public int ID {get;set;}
public string OptionName {get;set;}
public int Unit {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
我几乎有LINQ查询来返回结果,如SQL查询:
var q = from r in Results
group p.Unit by p.ID
int g
select new {ID = g.Key,
Selections = g.Count(),
Units = g.Sum()};
Run Code Online (Sandbox Code Playgroud)
我如何确保我的LINQ查询也给我了Option Name?
如果我创建了一个名为Statisticshold to my results 的类,我将如何修改LINQ查询以给我List<Statistics>结果集?
public class results
{
public int ID {get;set;}
public int NumberOfSelections { get; set; }
public string OptionName {get;set;}
public int UnitTotal {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
您当前只是按 ID 进行分组。相反,根据原始查询,您还需要按选项名称进行分组。这样每个组的密钥将包含 ID 和选项名称。这就是变化:
var q = from r in Results
group r.Unit by new { p.ID, p.OptionName } into g
select new { ID = g.Key.ID,
OptionName = g.Key.OptionName
Selections = g.Count(),
UnitTotal = g.Sum() };
Run Code Online (Sandbox Code Playgroud)
现在,我并没有立即意识到您只是为组项目选择了“单位”部分。我在查询表达式中错过了“group p.Unit by”。我的错...但其他人可能也会这样做。这是一种替代方法,它使组包含项目,然后对投影中的单位求和:
var q = from r in Results
group r by new { p.ID, p.OptionName } into g
select new { ID = g.Key.ID,
OptionName = g.Key.OptionName
Selections = g.Count(),
UnitTotal = g.Sum(x => x.Unit) };
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2153 次 |
| 最近记录: |