[英]Linq | Iterative Groupby on a List<>
我有一个对象
public class MasterData
{
public string loanId { get; set; }
public string docId { get; set; }
public string fileName { get; set; }
public string doctype { get; set; }
}
我有一个List<MasterData>
lstMstrDatawhich
可能看起来像这样
<table>
<tr>
<th>loanId</th>
<th>docId</th>
<th>docType</th>
</tr>
<tr>
<td>101</td>
<td>8001</td>
<td>BankStatement</td>
</tr>
<tr>
<td>102</td>
<td>8002</td>
<td>CreditReport</td>
</tr>
<tr>
<td>103</td>
<td>8003</td>
<td>PaySlip</td>
</tr>
<tr>
<td>103</td>
<td>8003</td>
<td>Payslip</td>
</tr>
<tr>
<td>104</td>
<td>8004</td>
<td>CreditReport</td>
</tr>
<tr>
<td>105</td>
<td>8006</td>
<td>Mortgage</td>
</tr>
<tr>
<td>105</td>
<td>8007</td>
<td>Mortgage</td>
</tr>
</table>
我想使用GroupBy
从中获取列表。 我想获取一个doctype列表,该列表具有与之关联的唯一DocId的数量。
因此,以上列表基本上将导致:
|Doctype |UniqueDocIdCount
----------------------------------
|BankStatement |1
|CreditReport |2
|PaySlip |1
|Mortgage |2
我试图这样做,但没有得到正确的结果
var groupDoctype = lsMstrData
.GroupBy(g => new {g.doctype, g.docId})
.Select(s => s.ToList())
.ToList();
var groupDoctype = lsMstrData
.GroupBy(g => g.doctype)
.Select(g => new { Doctype = g.Key, UniqueDocIdCount = g.Select(k => k.docId).Distinct().Count() })
.ToList();
如果保证docID是唯一的,则可以删除“ Distinct”并仅保留g.Count()。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.