2012-03-12 3 views
1

Я использую Linq в C#. Я определил свою собственную функцию, как этотГенерировать запрос Linq в функции C#

public static void AutoSuggest(TextBox t, string columnName, string tableName) 
{ 

} 
  • т является refrence из текстового поля
  • ColumnName это имя конкретного столбца
  • TABLENAME это имя конкретной таблицы

В этой пользовательской функции, используя параметры, я хочу получить указанные данные столбца из указанной таблицы базы данных.

Итак, как мне сгенерировать этот запрос в Linq?

+0

Пожалуйста, сначала попробовать себя ..... Если вы get error, затем укажите ошибку .... –

+0

, какая конкретная строка является значением в? – Jodrell

+0

Вы создали модель базы данных? – Jodrell

ответ

4

Если вы хотите использовать LINQ, вам лучше поговорить об источнике и селекторе; некоторые IQueryable<T> и что-то вроде Expression<Func<T,string>>. Если вы хотите использовать имена столбцов/таблиц, во-первых, они должны быть белый список (никогда не принимают имена из, скажем, веб-запроса), но код будет просто:

var values = dataContext.ExecuteQuery<string>("select distinct [" + columnName 
     + "] from [" + tableName +"]").ToList(); 

это довольно наивный подход, но он показывает основное использование; то вы бы привязывали данные как обычно. Тем не менее, я был бы гораздо более склонен к вызывающему коду только, чтобы сделать, например:

var values = dataContext.SomeTable.Select(x => x.SomeProperty) 
       .Distinct().ToList(); 

, который позволил бы избежать риска инъекции и т.д.

+0

@LukeMcGregor вы не можете использовать параметры для имени таблицы/столбца –

Смежные вопросы