我的网站正在我的网站上使用亚音速2.2。

我有1个奇怪的情况,需要运行一些临时SQL语句。

public IList<string> GetDistincList(string TableName, string FieldName)
{
    string sqlToRun = string.Format("SELECT DISTINCT {0} FROM {1} ORDER BY {0}", FieldName, TableName);

    Query query = new Query(TableName);
    query.PleaseRunThis(sqlToRun);
    query.ExecuteReader();

}

有人能帮我一下吗?看来,我只想返回一个通用字符串列表。

谢谢!

有帮助吗?

解决方案

亚音速有一个很棒的方法,称为executeTypedList(),因此您可以这样做。

List<int> result = DB.Select(Table.Columns.Id)
  .Distinct()
  .From<Table>()
  .OrderBy(Table.Columns.Id)
  .ExecuteTypedList<int>();

甚至与Pocos:

public class UserResult
{
    public int Id {get;set;}
    public string Name {get;set;}
}


List<UserResult> users = DB.Select(
       User.Columns.UserId + " as Id",     // the as ... is only needed if your
       User.Columns.UserName + " as Name"  // column name differs from the
   ).From<User>()                          // property name of your class
    .ExecuteTypedList<UserResult>();

不幸的是,此方法对于字符串不起作用,因为它需要a)valueType b)具有无参数构造函数的类,因为该方法使用反射将结果从结果映射到类的属性

但是,我一段时间以前写了一个扩展方法,该方法适用于字符串:

使用带有字符串的subson.Select()executeTypedList方法

在链接中查看我自己的答案。

如果将扩展程序添加到代码中,则可以执行:

 List<String> result = DB.Select(User.Columns.UserName)
                         .From<User>()
                         .ExecuteTypedList();       

其他提示

使用CodingHorror类。

这是亚音速三方法: http://www.subsonicproject.com/docs/codinghorror

亚音速2方法相似:

Dim ch As SubSonic.CodingHorror
ch.Execute("delete from @tablename", table)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top