как удалить повторную запись из результатов linq к sql

я хочу удалить повторенную запись из результатов, но отличный не делают этого для меня! почему???

var results = (from words in _Xplorium.Words
                           join wordFiles in _Xplorium.WordFiles on words.WordId equals wordFiles.WordId
                           join files in _Xplorium.Files on wordFiles.FileId equals files.FileId
                           join urls in _Xplorium.Urls on files.UrlId equals urls.UrlId
                           where files.Title.Contains(query) || files.Description.Contains(query)
                           orderby wordFiles.Count descending                               
                           select new SearchResultItem()
                           {
                               Title = files.Title,
                               Url = urls.Address,
                               Count = wordFiles.Count,
                               CrawledOn = files.CrawledOn,
                               Description = files.Description,
                               Lenght = files.Lenght,
                               UniqueKey = words.WordId + "-" + files.FileId + "-" + urls.UrlId
                           }).Distinct();
1
задан Sadegh 25 May 2010 в 19:16
поделиться

2 ответа

Возможно, вам придется реализовать собственный IEqualityComparer для SearchResultItem.

Затем вы можете передать это в Distinct и заставить его сравнивать с помощью вашего кода. Таким образом вы убедитесь, что сравнение проводится так, как вы хотите.

1
ответ дан 3 September 2019 в 00:18
поделиться

Предполагая, что SearchResultItem является классом, а не структурой, тогда как ссылочный тип он действительно «равен», только если это ссылка на тот же тип. Но вы создали новый объект для каждого результата. Все ваши значения будут считаться различными, если:

  • Вы не можете передать свой собственный объект IEqualityComparer. Или
  • ваш класс может реализовать IEquatable и переопределить свойства по умолчанию GetHashCode и Equals , чтобы сделать их равными, если все значения одинаковы (или другие критерии соответствующий).
1
ответ дан 3 September 2019 в 00:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: