casperOne が既に回答ExecuteQuery
したように、メソッドの最初のオーバーロード (Type パラメーターを要求するもの) を使用できます。同様の問題があり、あなたが例を尋ねたので、ここに1つがあります:
public IEnumerable<YourType> RetrieveData(string tableName, string name)
{
string sql = string.Format("Select * FROM {0} where Name = '{1}'", tableName, name);
var result = YourDataContext.ExecuteQuery(typeof(YourType), sql);
return result;
}
YourType
コンストラクターを持つ型を定義する必要があるため、注意してください (抽象型またはインターフェイス型にすることはできません)。SQL テーブルとまったく同じ属性を持つカスタム型を作成することをお勧めします。これを行うと、ExecuteQuery メソッドによって、テーブルの値がカスタム型に自動的に「挿入」されます。そのように:
//This is a hypothetical table mapped from LINQ DBML
[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.ClientData")]
public partial class ClientData : INotifyPropertyChanging, INotifyPropertyChanged
{
private int _ID;
private string _NAME;
private string _AGE;
}
//This would be your custom type that emulates your ClientData table
public class ClientDataCustomType
{
private int _ID;
private string _NAME;
private string _AGE;
}
したがって、前の例では、ExecuteQuery メソッドは次のようになります。
var result = YourDataContext.ExecuteQuery(typeof(ClientDataCustomType), sql);