Я не уверен, почему в заголовке вашего вопроса написано «без объединения», поскольку, судя по вашему SQL, вы действительно хотите присоединиться.Но в любом случае.
Я иду по комментарию, который вы разместили на свой вопрос.Кажется, вы хотите, чтобы по одной строке возвращалось каждое уникальное значение даты, которое появляется в обеих таблицах, верно?
В этом случае я бы использовал Union
:
var dates = db.Table1.Select(t => t.Timestamp).Union(
db.Table2.Select(t => t.Timestamp));
Далее выможет превратить каждую метку времени в полную строку со всей информацией:
var result = dates.Select(date => new
{
Table1Info = db.Table1.FirstOrDefault(t => t.Timestamp == date),
Table2Info = db.Table2.FirstOrDefault(t => t.Timestamp == date)
});
Помните, что даже если вы напишите ее в виде двух переменных, подобных этой, она все равно будет выполняться как один запрос при ее оценке (с использованием foreach
, например).Это делает код немного более читабельным.
Если это не то, что вы хотели, я рекомендую вам отредактировать ваш вопрос вместо добавления дополнительных комментариев.Прямо сейчас весь вопрос, который на самом деле задает вопрос: «что такое LINQ-эквивалент select r1.*, r2.* from table1 r1, table2 r2
?», И ответ на него уже опубликован.