2014-02-06 27 views
1

是否可以將此功能縮短爲單行/兩行?Linq縮短

Public Function countrySelector() As List(Of String) 
    Dim myString As New List(Of String) 
    Dim countryTitle As List(Of Entities.AttributeValue) = _PageVals.Where(Function(x) x.TabDescription = "Country").ToList() 
    myString = countryTitle.Where(Function(x) x.AttributeId = Entities.AttributeTypes.TITLE).Select(Function(y) y.Value).ToList() 
    Return myString 
End Function 
+1

確實行數不等於質量。優質的代碼易於閱讀,理解和維護。正確編寫10行代碼可能會優於跨越3個水平屏幕的1行代碼。你會避免習慣於把所有東西都放在一條線上,這樣可以幫你一個忙。其他開發人員也會爲此感謝你。 – Neolisk

回答

2

試試這個,

myString = _PageVals.Where(Function(x) x.TabDescription = "Country" AndAlso x.AttributeId = Entities.AttributeTypes.TITLE).Select(Function(y) y.Value).ToList() 
+0

這看起來更像C#而不是VB。 – cHao

+0

我在VB.NET語法中改變了它。 –

1

請嘗試以下

Return _PageVals _ 
    .Where(Function(x) x.TabDescription = "Country") _ 
    .Where(Function(x) x.AttributeId = Entities.AttributeTypes.TITLE) _ 
    .Select(Function(y) y.Value) _ 
    .ToList() 
+0

+1。投票最好,以方便閱讀。注意:VB10 +在'.'字符之後支持隱式行連續,所以你不需要'_'。 – Neolisk

+0

@Neilisk是的我不太確定他們使用的是哪個版本,因此我使用了明確的分隔符 – JaredPar

0

或者你可以用這種方式

myString = (From C in _PageVals Where C.TabDescription = "Country" AndAlso C.AttributeId = Entities.AttributeTypes.TITLE Select C.Value).ToList()