如何获得另一个函数的返回值?
问题描述:
如何在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 :)
出色答卷乔恩斯基特。它给了我正确的解决方案。非常感谢你的帮助。 – kothasiva 2012-04-05 07:05:56