我有以下字符串字典:
pos($string)
我的数据库表看起来像这样(Crazy,我知道):
FirstName | Col1
LastName | Col2
Email | Col3
现在,我需要在带有别名的c#代码中选择一个值列表。使用投影很容易做到这一点(就像我可以硬编码属性名和列名一样,这将解决这个问题):
Id Col1 Col2 Col3
1 John Doe test@email.com
但不幸的是,我只在字典中将列名和alises存储为字符串。看起来这是表达式树或动态sql的工作,但我无法弄清楚如何实现这一点。我尝试使用Expando对象,但作为回报,我得到了一个字典,而我需要一个包含FirstName,LastName,Email列的列表。
答案 0 :(得分:3)
您可以将SQL查询动态构造为简单的字符串:
var dict = new Dictionary<string, string>
{
["FirstName"] = "Col1",
["LastName"] = "Col2",
["Email"] = "Col3"
};
var query = $"select {String.Join(", ", dict.Select(x => $"{x.Value} as {x.Key}"))} from myTable";
var items = ctx.Database.SqlQuery<object>(query).ToList();