Как выбрать все записи при использовании Union на EF - PullRequest
1 голос
/ 27 марта 2019

Я пытаюсь обобщить все транзакции из другой таблицы.Когда я использую объединение между всеми результатами таблицы, в моем запросе добавляется отчет, а в сводке по транзакции не отображаются все детали.

var InTemp =    from a in db.InDetail
                select new Models.TransactionList
                {
                    InOutType = "In",
                    OrderDate = a.OrderDate,
                    Total = a.Total,
                    Operator = a.User,
                    OperationDateTime = a.DateTime
                };
var OutTemp = from a in db.OutDetail
                select new Models.TransactionList
                {
                    InOutType = "Out",
                    OrderDate = a.OrderDate,
                    Total = a.Total,
                    Operator = a.User,
                    OperationDateTime = a.DateTime
                };    
var ReleaseTemp = from a in db.ReleaseDetail
                    select new Models.TransactionList
                    {
                        InOutType = "Release",
                        OrderDate = a.OrderDate,
                        Total = a.Total,
                        Operator = a.User,
                        OperationDateTime = a.DateTime
                    };                        
var query = InTemp.Union(OutTemp).Union(ReleaseTemp);

Приведенный выше код при добавлении Union, EF добавляет Distinct, а в результате отображаются только уникальные записи. Вместо этого мне нужны все записи, основанные на моем выборе.Спасибо

1 Ответ

2 голосов
/ 27 марта 2019

Используйте Concat() вместо Union():

var query = InTemp.Concat(OutTemp).Concat(ReleaseTemp);

Union() действует так же, как Sql union и возвращает отличный результат, а Concat() делает то же самое, что Sql Union all.

Демонстрационная версия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...