【发布时间】:2021-03-28 23:24:02
【问题描述】:
我正在使用 linq 来查询数据。 但我希望它返回大写字段。 下面是我的代码,如何将所有字段转换为大写?
public List<dynamic> QueryToList(string connStr, string sql)
{
using (OracleConnection conn = new OracleConnection(connStr))
{
conn.Open();
var results= conn.Query(sql).ToList();
conn.Close();
return results; //For now, it would return all fields into lower case.
}
}
编辑: 感谢@Alen.Toma,我使用下面的代码并返回我想要的结果。
public List <dynamic> QueryToList(string connStr, string sql)
{
conn.Open();
var results = conn.Query(sql);
conn.Close();
var valueResult = new List<dynamic>();
foreach (dynamic item in results)
{
var dicItem = item as IDictionary<string, object>;
var x = new ExpandoObject();
foreach (var i in dicItem.Keys)
{
((ICollection<KeyValuePair<string, object>>)x).Add(new KeyValuePair<string, object>(i.ToUpper(), dicItem[i]));
}
valueResult.Add(x);
}
return valueResult;
}
【问题讨论】:
-
为什么要这样做?您发布的内容不会返回小写,它会返回原始数据。但是,转换为大写会浪费内存而没有任何好处。 SQL 比较通常不区分大小写(取决于列排序规则)。您可以在代码中执行不区分大小写的比较。如果你想以大写显示一些数据,最好的地方是显示表单本身,例如作为文本框或网格上的格式字符串
-
在任何情况下,您都没有使用 LINQ,而是使用了 Dapper。将字符串转换为大写的最简单方法是 SQL 查询。
-
由于我使用的是postgreSQL,所以该字段将返回小写,但我希望其字段返回大写而不更改SQL。感谢您的设备!
-
不,它不会 - 没有数据库会自行修改数据。您还没有解释为什么要返回大写字母。如果您返回大写字母,您认为会解决什么真正的问题?很可能不需要这种转换
-
除非您的意思是要更改字段名称?只需在查询中使用列别名。
SELECT myfield as MyField, ....