EF.Как объединить таблицы, отсортировать строки и получить лучшие объекты? - PullRequest
3 голосов
/ 14 марта 2011

Я хочу объединить записи из 2 таблиц, отсортировать их и прочитать TOP-строки из набора результатов.

T1
--------
Id, Timestamp, Text1

T2
--------
Id, Timestamp, Text2

С SQL это можно сделать следующим образом:

SELECT TOP 10 * FROM
(
    SELECT 
        [Timestamp], 
        [Text1] 

    FROM 
        T1

    UNION

    SELECT 
        [Timestamp], 
        [Text2]

    FROM 
        T2
) as x

ORDER BY [Timestamp]

Q: Как я могу выполнить эту задачу, используя EF linq?

Ответы [ 2 ]

7 голосов
/ 14 марта 2011

Вам нужен анонимный тип с теми же именами и типами свойств, прежде чем вы сможете выполнить операцию Union:

var t1List = from a in allT1
        select new
        {
            TimeStamp = a.TimeStamp,
            Text = a.Text1
        };
var t2List = from b in allT2
        select new
        {
            TimeStamp = b.TimeStamp,
            Text = b.Text2
        };

var result = t1List.Union(t2List).OrderBy(ab => ab.TimeStamp).Take(10);
0 голосов
/ 14 марта 2011

Как насчет чего-то вроде:

var top10 = EFentity.t2.Union(EFentity.t1.ToList()).OrderBy(t=>t.Timestamp).ToList().Take(10);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...