使用 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? [复制]

将整个范围转换为大写,而不循环遍历所有单元格

将pyspark数据框的列转换为小写

如何使用ruby / rails将所有大写字母转换为适当的首字母大写字母,其余为小写?

SQL 查询 有啥函数可以将数字转换成大写的