簡體   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