0
給定一個包含多行的DataView,我想根據以下標準提取一行;if..if else..else..in linq to objects
- 如果某行具有一定的字符串開始,並具有一定的字符串結尾,然後選擇其他所有
- 如果沒有一行滿足所述第一標準,那麼就找一排,與某些啓動上面一行字符串
- 如果我們無法匹配上述任何內容,則默認爲null。
我的快速嘗試只是返回滿足任何條件的第一行(如果VB語法不正確,我不太熟悉它);
Dim result = (From row In dv.Table.Rows() _
Where (GetString(row, "id").StartsWith(Me.ID.Substring(0, 3), StringComparison.OrdinalIgnoreCase) AndAlso _
GetString(row, "id").EndsWith(Me.ID.Substring(Me.RegisteredID.Length - 2, 2), StringComparison.OrdinalIgnoreCase)) OrElse _
GetString(row, "id").StartsWith(Me.ID.Substring(0, 3), StringComparison.OrdinalIgnoreCase) _
Select row).FirstOrDefault()
編輯:我的意思補充說,像https://stackoverflow.com/a/443055/685760看起來很有希望,但我不認爲它會在我的情況下工作。如果我錯了,隨時糾正我。
我懷疑同樣多。我只是希望得到證實。我只是不確定是否有一些擴展方法或linq魔術可以應用,但仍然可以像我希望的那樣進行一個看起來很複雜的查詢工作,並且它可以用於常見的凡人:) –
將它拆分爲兩個查詢(帶有註釋)使它可讀並且不笨重。我沒有試圖用linq作爲我的錘子,但我認爲最好是在dataview和multiple for循環上過濾。這兩個查詢似乎運作良好。 –