我有一个对象
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();
答案 0 :(得分:2)
var groupDoctype = lsMstrData
.GroupBy(g => g.doctype)
.Select(g => new { Doctype = g.Key, UniqueDocIdCount = g.Select(k => k.docId).Distinct().Count() })
.ToList();
如果docID保证是唯一的,那么您可以删除&#34; Distinct&#34;然后离开g.Count()。