#c# #asp.net #linq
#c# #asp.net #linq
Вопрос:
Я запускаю простой запрос и привязываю его к повторителю, однако НЕКОТОРЫЕ данные поступают дважды, данные не дублируются в БД. Это происходит, когда я выбираю и беру. Я скорректировал свой код так, как это сделал MSDN, но, может быть, я что-то пропустил?
Код:
var query = (from q in data.Events
join x in data.Types on q.id equals x.id
where q.change != "UNCHANGED" amp;amp; q.indicator.Contains("UP")
select new
{
q.id,
q.price,
q.date,
q.indicator,
x.information
}).ToList().OrderByDescending(q => q.price).Take(10);
rptEvents.DataSource = query;
rptEvents.DataBind();
Комментарии:
1. Если вы запустите SQL-запрос, который генерируется в базе данных, вы получите повторяющиеся строки?
2. @John Там нет дубликатов. Из моих 10, 3 являются дубликатами при использовании LINQ. 3-я, 5-я и 8-я позиции, похоже, дублируются независимо от того, как я выбираю данные, поэтому, если данные отличаются, это все равно вызывает проблему.
3. Разве это не должно быть
.OrderByDescending(q => q.price).Take(10).ToList()
? Ваш запрос загружает все в память, затем выполняетсяOrderBy().Take()
и привязывается к IEnumerable.4. JOIN to
data.Types
приводит к дублированию. Это очевидно.