gpt4 book ai didi

c# - linq中的动态投影

转载 作者:行者123 更新时间:2023-11-30 16:42:40 28 4
gpt4 key购买 nike

我有以下字符串字典:

FirstName | Col1
LastName | Col2
Email | Col3

我的数据库表看起来像这样(疯狂,我知道):

Id   Col1   Col2    Col3
1 John Doe test@email.com

现在,我需要在我的 C# 代码中选择一个带有别名的值列表。使用投影很容易做到这一点,就像这样(只有当我可以硬编码属性名称和列名称时,这才能为我解决这个任务):

ctx.myTable.Select(x=> new { FirstName = x.Col1, LastName = x.Col2, Email = x.Col3});  

但不幸的是,我只有列名和别名作为字符串存储在字典中。看起来这是表达式树或动态 sql 的工作,但我不知道如何实现。我试着用 Expando 对象来做,但作为返回,我得到了一本字典,而我需要有一个包含 FirstName、LastName、Email 列的列表。

最佳答案

您可以将 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();

关于c# - linq中的动态投影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46417811/

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