[英]Distinct not working in entity framework
獲取文檔列表的函數只有不同的...
public static List<DocumentTypeModel> GetUploadedDocumentsName(int TicketId)
{
List<DocumentTypeModel> documents = new List<DocumentTypeModel>();
using (var db = new UnitOfWork())
{
documents = db.tbl_TrnTicketDocument.Get(x => x.FK_TicketId == TicketId && x.IsActive == true).Select(s => new DocumentTypeModel()
{
DocumentTypeNameEnglish = s.tbl_MstDocumentType.DocumentTypeNameEnglish
}).Distinct().ToList();
}
return documents;
}
目前的結果是 -
在取消遺囑/不遺囑的情況下的宣誓書
在取消遺囑/不遺囑的情況下的宣誓書
分配信
分配信
死亡證明
死亡證明
租賃契約
租賃契約
申請人的照片身份
申請人的照片身份
占有信
占有信
已注冊/未注冊的遺囑
已注冊/未注冊的遺囑
您可以使用groupby並選擇第一個選項,如下所示:
List<DocumentTypeModel> documents = new List<DocumentTypeModel>();
using (var db = new UnitOfWork())
{
documents = db.tbl_TrnTicketDocument.Get(x => x.FK_TicketId == TicketId && x.IsActive == true).Select(s => new DocumentTypeModel()
{
DocumentTypeNameEnglish = s.tbl_MstDocumentType.DocumentTypeNameEnglish
}).ToList();
documents = documents.GroupBy(x => x.DocumentTypeNameEnglish).Select(g => g.First());
}
Distinct()不像你在對象上嘗試的那樣工作。 使用IComparer來實現這個功能https://support.microsoft.com/en-us/kb/320727
創建一個比較器類
public class DocumentTypeModelComparer: IComparer
{
int IComparer.Compare(object a, object b)
{
if(a.Id == b.ID)
return 0;
else
return 1;
}
}
現在在你的lambda表達式中
documents = db.tbl_TrnTicketDocument.Get(x => x.FK_TicketId == TicketId && x.IsActive == true).Select(s => new DocumentTypeModel()
{
DocumentTypeNameEnglish = s.tbl_MstDocumentType.DocumentTypeNameEnglish
}).ToList().Distinct(new DocumentTypeModelComparer()).ToList();
您正在選擇documenttypemodel,這是不同的部分(因此檢查所有字段),您可能希望通過https://github.com/morelinq/MoreLINQ進行區分,或者您可以先使用group by( linq distinct)或由多個屬性分組 )。
另一個選項是僅選擇DocumentTypeNameEnglish字段,您將獲得唯一的文檔。
documents = db.tbl_TrnTicketDocument.Get(x => x.FK_TicketId == TicketId && x.IsActive == true).Select(s => new { documentTypes =s.tbl_MstDocumentType.DocumentTypeNameEnglish}).Distinct().ToList();
希望這是你想要的,如果沒有,你能發布更多細節嗎?
根據弗拉基米爾的評論切換到下面:
.ToList().Distinct();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.