Я получаю кортежи из базы данных MSSQL с этим запросом и списком:
string query3 = @"select * from HistoryMessageValues where IdMessage in (select id from HistoryMessages where IDDevice in ("+listIDs+")) and (DtRicezione between '" + fromdate.ToString("yyyy-dd-MM") + "' and '" + todate.ToString("yyyy-dd-MM") + "')";
List<HistoryMessageValues> totalm= dbMngr.Set<HistoryMessageValues>().FromSql(query3).ToList();
List<HistoryMessageValues> outdoor = totalm.Where(x => x.IdDataModelField==Guid.Parse("9f5d1fe3-27d7-44ee-bea4-02b36897f9af")).ToList();
Запрос написан явно так:
select * from HistoryMessageValues where IdMessage in (select id from HistoryMessages where IDDevice in ('7b6d6ca2-4d87-4334-9477-d96925d992c4' )) and (DtRicezione between '2010-01-01' and '2019-01-08')
and IdDataModelField='9f5d1fe3-27d7-44ee-bea4-02b36897f9af'
Если я выполню запрос непосредственно к БД, я получу следующие кортежи:
Как видите, атрибуты "value" и "DtRicezione" отличаются (по крайней мере, большей частью) от кортежей.
Между тем, я получаю только первый реплицированный сотен реплицированных.
Действительно, выполняя следующий цикл, после этого 3 строки C # в моем бэкэнде:
List<HistoryMessageValues> outdoor = totalm.Where(x => x.IdDataModelField==Guid.Parse("9f5d1fe3-27d7-44ee-bea4-02b36897f9af")).ToList();
for (int i=0; i<outdoor.Count(); i++)
{
Console.WriteLine(outdoor.ElementAt(i).value + " " + outdoor.ElementAt(i).DtRicezione + " " + outdoor.ElementAt(i).IdDataModelField);
}
Результат таков:
Как вы можете сравнить два изображения, это будет первый кортеж, доступный в таблице БД.
Создание скрипта таблицы:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[HistoryMessageValues](
[id] [bigint] NOT NULL,
[IdDataModelField] [uniqueidentifier] NOT NULL,
[value] [nvarchar](50) NOT NULL,
[IdMessage] [bigint] NOT NULL,
[DtRicezione] [datetime] NULL,
[idKey] [uniqueidentifier] NULL
) ON [PRIMARY]
GO