使用 Linq 将所有字段转换为大写
Posted
技术标签:
【中文标题】使用 Linq 将所有字段转换为大写【英文标题】:Convert all fields to uppercase with Linq 【发布时间】: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, ....
【参考方案1】:
我同意@Panagiotis Kanavos,更好的是将数据转换为类对象。
如果你仍然想这样做
这是一个例子。
public List <dynamic> QueryToList(string connStr, string sql)
var valueResult = new List <dynamic> ();
using(OracleConnection conn = new OracleConnection(connStr))
conn.Open();
var results = conn.Query(sql).ToList();
conn.Close();
foreach(var item in results)
var dicItem = item as Dictionary <string,object> ;
var x = new ExpandoObject();
forEach(var i in dicItem.Keys)
((ICollection<KeyValuePair <string, object>>)x).Add(i.ToUpper(), dicItem[i]);
valueResult.Add(x);
return valueResult;
【讨论】:
我稍微编辑了一下,现在可以使用了,谢谢! Np,我是在没有测试的情况下即时编写的,所以如果没有一点小错误,它就不可能工作:) 无论如何,既然所有这些对你有用,你可以把它标记为已回答以上是关于使用 Linq 将所有字段转换为大写的主要内容,如果未能解决你的问题,请参考以下文章
当涉及两个以上的表时,如何将来自相似字段的单个表的两个左连接转换为 LINQ? [复制]