2014-10-18 3 views
-1

Я хотел бы сделать linq для sql-провайдера, которые позволяют мне запрашивать таблицу, которая также не отображается в datamodel или не известна.C# Linq по динамической таблице

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

Для этого я должен определить пользовательский поставщик linq, который будет управлять деревом выражений, а затем вызвать стандартный linq для sql; но в данный момент я не знаю, как это сделать.

Так что моя цель состоит в том, что я хотел бы написать такой код:

List<dynamic> rows = form book in context.Book 
         where book.Author = "Author" 
         select book; 

Спасибо заранее за любые предложения.

+0

http://www.codeproject.com/Tips/652766/Dynamically-Build-LINQ-to-SQL-Classes-at-Runtime это кажется, что я ищу для. Теперь мне нужно немного проверить его, а затем я могу это подтвердить. – Skary

ответ

0

Вы можете использовать Reflection:

PropertyInfo table = typeof(ContextType).GetProperty(TableName); 

from book in table.GetValue(Context) 
... 
+0

Вы правы, я только что редактировал мой вопрос. Поскольку компилятор доверяет вам, когда вы пишете: var a = myDynamic.property Я хотел бы, чтобы linq доверял мне, когда пишу «context.AnyNames» или «x.AnyProperty», – Skary