gpt4 book ai didi

SubSonic 如何执行SQL语句?

转载 作者:行者123 更新时间:2023-12-02 19:12:49 25 4
gpt4 key购买 nike

我的网站正在使用 Subsonic 2.2。

我遇到了一种奇怪的情况,我需要运行一些临时 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();

}

有人可以帮我吗?看起来,我只想返回一个通用的字符串列表。

谢谢!

最佳答案

Subsonic 有一个很棒的方法,称为 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) 值类型b) 具有无参数构造函数的类,因为该方法使用反射将结果中的列映射到类的属性

但是我不久前编写了一个适用于字符串的扩展方法:

Use the Subsonic.Select() ExecuteTypedList Method with String

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

如果将扩展方法添加到代码中,您可以执行以下操作:

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

关于SubSonic 如何执行SQL语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3161531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com