正如casperOne已经回答的那样,您可以使用ExecuteQuery
方法的第一个重载(要求Type参数的那个)。由于我遇到了类似的问题,而您又要求一个示例,这里是一个:
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方法将自动将表中的值“注入”到您的自定义类型中。就像这样:
[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.ClientData")]
public partial class ClientData : INotifyPropertyChanging, INotifyPropertyChanged
{
private int _ID;
private string _NAME;
private string _AGE;
}
public class ClientDataCustomType
{
private int _ID;
private string _NAME;
private string _AGE;
}
因此,在前面的例子中,ExecuteQuery方法将是:
var result = YourDataContext.ExecuteQuery(typeof(ClientDataCustomType), sql);