繁体   English   中英

如何获取另一个函数的返回值?

[英]How to get another function's returned value?

LINQ中如何给另一个函数的返回值。

我有一个IEnumerable of objects(Say ObjColl) 从那个 object 集合中,我必须根据另一个function(say GetObjPropertyValue)的返回值来过滤对象。 我最终的 output 应该是 object 的字典及其属性值。 该字典不应包含 propertyvalue 为空的对象。

GetObjPropertyValue function 将 Object 作为输入并将其属性作为字符串返回。 但有时如果对象上不存在该属性,它什么也不返回。

我的查询是这样的,

Dictionary(obj, string)=ObjColl.Where(Function(p) not GetObjPropertyValue(p) is nothing)

但在上面的查询中,我应该编写代码来存储 GetObjPropertyValue(p) 的返回值,并将 obj-p 和 returnValue 组合添加到字典中。 怎么写啊??

例如见下面的代码:

代码下面的最后一行是错误的。 但请建议我如何纠正它。 我的意图是,我想要每个水果名称及其颜色(由其他 function 调用返回)的 output 集合(比如字典),用于所有 GetFruitColor 不是空的(它可以是空字符串或有效字符串)的水果。

[code] Private function GetFruitColor(fruit) as string '返回水果颜色。 '如果有效的水果和颜色不可用,它返回“”(空字符串)'如果水果不是有效的水果,它什么都不返回。 结束 function

private sub MyMethod()
  Create a list of strings.
        Dim fruits As New List(Of String)(New String() _
                                {"apple", "passionfruit", "banana", "mango", _
                                 "orange", "blueberry", "grape", "strawberry"})

Dim query = _fruits.Where(Function(fruit) k= GetFruitColor(fruit) if not k is nothing select fruit, k) 
End Sub

上面代码最后一行是错误的。 那么如何将 getFruitColor 放入k ,如何更正它以保存k值并给我 output 作为水果和k值的字典。

我会建议:

  • 投影到由(水果,颜色)组成的匿名类型
  • 过滤掉“无” colors
  • 创建字典

在 C# 中,这将是:

var query = fruits.Select(fruit => new { fruit, color = GetFruitColor(fruit) })
                  .Where(pair => !string.IsNullOrEmpty(pair.color))
                  .ToDictionary(pair => pair.fruit, pair => pair.color);

针对 VB 进行相应调整:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM