2012-03-12 4 views
1

私はLinqをC#で使用しています。 このC#関数でLinqクエリを生成する

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

} 
  • トンは、テキストボックスのrefrence
  • ColumnNameには、特定の列の名前
  • テーブル名が
特定のテーブルの名前であるであるように私は自分自身の関数を定義しています

このユーザー定義関数では、パラメーターを使用して、指定された列データを指定されたデータベース表から取得します。

Linqでこのクエリをどのように生成する必要がありますか?

+0

は、まず自分を試してみてくださいなどの注射のリスクを回避する

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

.....あなたの場合エラーが発生したら、エラーを指定してください.... –

+0

特定の行はどの値ですか? – Jodrell

+0

データベースモデルを作成しましたか? – Jodrell

答えて

4

LINQを使用する場合は、ソースとセレクタについてよく話してください。いくつかIQueryable<T>など、Expression<Func<T,string>>のようなものです。あなたは、カラム/テーブル名を使用したい場合は、まず彼らはホワイトリストされている(これまでのWeb要求、たとえば、から名前を受け付けない)でなければなりませんが、コードは単純に次のようになります。

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

これはかなり単純なアプローチですが、基本的な使い方を示しています。通常どおりデータバインディングを行います。しかし、私は、例えば、呼び出し元のコードだけで行うことのためにはるかに傾斜だろう:

+0

@ LukeMcGregorテーブル/カラム名にパラメータを使用することはできません –

関連する問題