gpt4 book ai didi

.net - 使用 System.Linq.Expressions API 在 LINQ 中选择列

转载 作者:行者123 更新时间:2023-12-02 00:20:20 25 4
gpt4 key购买 nike

我正在尝试使用 LINQ 表达式从 IEnumerable 中动态选择列到我可以绑定(bind)到我的 UI 的结果集中。此时,我很难掌握 LINQ 表达式中投影的基础知识。

假设我有一个这样的字符串列表:

Dim myStrings = {"one", "two", "three"}.ToList()

使用 lambda 表达式,我可以通过以下操作轻松地选择出一组字符串长度:

Dim myStringLengths = myStrings.Select(Function(x) x.Length)

此语句的结果将给我一个名为 myStringLengths 的集合,其中包含元素 3, 3, 5

我似乎无法弄清楚如何使用 LINQ 表达式生成等效结果。

编辑:当我说 LINQ 表达式时,我是在谈论在 System.Linq.Expressions 命名空间中使用 API,而不是 LINQ 语句或 lambda 表达式。正如您在上面清楚看到的那样,我已经熟悉如何以这种方式生成投影。

非常感谢任何帮助。

最佳答案

 var item = Expression.Parameter(typeof(string), "x");
var length = Expression.PropertyOrField(item, "Length");

new string[] {"one", "two", "three"}
.AsQueryable()
.Select(Expression.Lambda<Func<string, int>>(length, item));

您需要一个 IQueryable 才能使用表达式(您可以使用 ToList 或类似工具将它带回 IEnumerable)。然后将 Lambda 生成为表达式树(长度示例在上面完成)。抱歉,它在 C# 中

关于.net - 使用 System.Linq.Expressions API 在 LINQ 中选择列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11299095/

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