gpt4 book ai didi

c# - 动态修改 LINQ to SQL Select 语句的列

转载 作者:太空宇宙 更新时间:2023-11-03 22:24:44 26 4
gpt4 key购买 nike

我正在尝试为我的应用构建一个 REST-ful API。目前我有这样的东西:
www.example.com/submissions/?format=json

这将以 JSON 格式返回最新的十个提交。每个对象都有其详细信息,例如提交名称、创建日期、用户、正文等。

我想做一些事情,例如:
www.example.com/submissions/?format=json&filter=name,user

过滤器应该请求返回相同的结果,但只包括提到的细节,即每个对象将只有一个名称和用户。

就 JSON 输出而言,这是相当简单的。我可以从数据库中加载所有列,并创建和序列化一个只包含过滤器中的列的对象。但是,我不想加载数据库中的所有列 - 我只想用我将包含在响应中的列打扰我的数据库

我想做这样的事情:

var result = from record in Submissions
select
{
Name,
Date,
User,
Body
};

现在我有了 result 对象,它是 IQueryable,所以还没有调用数据库。

然后,我应该检查 filter 查询字符串并排除未提及的列。

最后,我可以用类似的东西来执行 select 语句
JavaScript.Serialize(result.ToList());

这可以通过 LINQ to SQL 实现吗?

最佳答案

手动构建 Select 表达式树的替代方法是 Dynamic LINQ ,它提供了一个接受字符串的Select方法:

var filter = "name,user";
var result = Submissions.Select("new(" + filter + ")");

然后将字符串翻译成表达式树并传递给您的查询提供程序。

关于c# - 动态修改 LINQ to SQL Select 语句的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1821558/

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