私は、TagIDとTagNameの一意の値だけを返すLINQ to Entitiesクエリを使用しています。LINQ Return DISTINCT値
コード:
var tags = (from t in _dbContext.TaskRecordDetails.ToList()
join tag in _dbContext.Tags on t.TagName equals tag.TagName
where t.Period == period
select new TagDTO()
{
TagID = tag.TagID,
TagName = tag.TagName
});
return tags.Distinct<TagDTO>();
ただし、重複する行は、まだ以下のように返されます。一意の行のみが返されるようにするにはどうすればよいですか?あなたの最後のコメントに基づいて
[
{
"TagID": 1,
"TagName": "Level 1",
"TagDescription": null,
"IsActive": false
},
{
"TagID": 2,
"TagName": "Level 3",
"TagDescription": null,
"IsActive": false
},
{
"TagID": 3,
"TagName": "Level 5",
"TagDescription": null,
"IsActive": false
},
{
"TagID": 1,
"TagName": "Level 1",
"TagDescription": null,
"IsActive": false
},
{
"TagID": 2,
"TagName": "Level 3",
"TagDescription": null,
"IsActive": false
}
]
私たちに特にご 'TagDTO'クラス、その' GetHashCode'実装を表示します。 – mjwills
[linq&distinct、duplicate of equalals&gethashcode]の可能な複製(https://stackoverflow.com/questions/4786919/linq-distinct-implementing-the-equals-gethashcode) – mjwills
なぜあなたは '.ToList ) 'の' TaskRecordDetails'に?それを削除して、クエリをSQLに変換し、Distinctが機能するはずです。 – Magnus