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

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

问题描述:

如何在LINQ中给出另一个函数的返回值。我有IEnumerable。从该对象集合中,我必须根据另一个function(say GetObjPropertyValue)的返回值来过滤对象。我的最终输出应该是对象字典和它的propertyValue。这本字典不应该有propertyvalue没有的对象。如何获得另一个函数的返回值?

GetObjPropertyValue函数将Object作为输入并将其属性返回为字符串。但有时它不会返回Object,如果该属性不存在。

我的查询是一样的东西,

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

但在上面的查询我应该写代码来存储GetObjPropertyValue(P)的返回值,并添加OBJ-P和ReturnValue组合到字典中。如何写这个?

例如参见下面的代码:

以下代码最后一行是错误的。但请告诉我如何纠正它。我的本意是,我希望每个fruitname及其所有的水果色(其它函数调用返回),其中GetFruitColor是没有什么的输出集合(比如字典)(它可以为空或有效的字符串)。 '

[code] Private function GetFruitColor(fruit)as string '它返回水果的颜色。 '如果有效的水果和颜色不可用,则返回“”(空字符串) '如果水果无效水果,则不返回任何东西。端功能

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价值,并给我输出的水果字典和k值。

我建议:

  • 项目以匿名类型包括(水果,颜色)
  • 筛选出 “无中生有” 的色彩
  • 创建字典

在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 :)

+0

出色答卷乔恩斯基特。它给了我正确的解决方案。非常感谢你的帮助。 – kothasiva 2012-04-05 07:05:56