Мне нужно собрать Distinct Id из конкретной таблицы, используя LINQ. Уловка также нужна инструкция WHERE, которая должна фильтровать результаты, основанные только на требованиях, которые я задал. Относительно новичок в использовании LINQ, но я использую следующий код более или менее:
`private void WriteStuff(SqlHelper db, EmployeeHelper emp)
{
String checkFieldChange;
AnIList tableClass = new AnIList(db, (int)emp.PersonId);
var linq = tableClass.Items
.Where(x => x.UserId == emp.UserId && x.Date > DateBeforeChanges && x.Date < DateAfterEffective && ((x.Field == Inserted)
|| (x.Field == Deleted)))
)).OrderByDescending(x => x.Id);
if (linq != null)
{
foreach (TableClassChanges item in linq)
{
AnotherIList payTxn = new AnotherIList(db, item.Id);
checkFieldChange = GetChangeType(item.FieldName);
//Other codes that will retrieve data from each item and write it into a text file
}
}
}
Я попытался добавить .Distinct для var linq, но он все равно возвращает повторяющиеся элементы (имея в виду один и тот же идентификатор). Я прочитал множество сайтов и попробовал добавить .Select в запрос, но предложение .Where прерывается. Существуют и другие статьи, где запрос каким-то образом отличается тем, как он извлекает значения и помещает их в переменную. Я также пытался использовать .GroupBy, но я получаю "По крайней мере, один объект должен реализовать IComparable" при использовании Id в качестве ключа.
На самом деле запрос работает, и я могу выводить данные из столбцов с требуемыми спецификациями, но я просто не могу сделать .Distinct work (что единственное, что действительно отсутствует). Я попытался создать два vars с одним запуском отдельного вызова, а затем вложенным foreach, чтобы гарантировать, что значения просто уникальны, но тысячи записей для сбора влияния на производительность просто слишком много.
Я тоже не уверен, если мне придется переопределить или использовать IEnumerable для моего требования, и я подумал, что задаю вопрос на всякий случай, если будет более простой способ, или если возможно иметь оба. Выбрать и. Где работает только одно утверждение?