У меня есть таблица данных, которые я запрашиваю, чтобы определить, является ли определенная строка существует, есть несколько возможных сценариев:с datatable.AsEnumerable Запросы LINQ
Правило 1:
Dim rt1 As EnumerableRowCollection(Of Double) = From row In dtCh.AsEnumerable() _
Order By row.Field(Of Int64)("ID") Descending
Where (row.Field(Of String)("L_TYPE") = "A" _
And row.Field(Of Int16)("Customer_Type") = 1)
Select row.Field(Of Double)("Price")
If rt1.Any() Then
return CType(rt1.FirstOrDefault(), Decimal)
End If
Правило 2:
Dim rt2 As EnumerableRowCollection(Of Double) = From row In dtCh.AsEnumerable() _
Order By row.Field(Of Int64)("ID") Descending
Where (row.Field(Of String)("L_TYPE") = "B" _
And row.Field(Of Int16)("Customer_Type") = 0)
Select row.Field(Of Double)("Price")
If rt2.Any() Then
return CType(rt2.FirstOrDefault(), Decimal)
End If
и есть еще 2 правила, если у меня есть строка, возвращаемая для одного правила, я использую й e, возвращенная с первого запроса, если ничего не было возвращено из первого запроса, тогда я перехожу к второму правилу и использую цену со второго и при необходимости перейду на третий и четвертый ...
Но это кажется немного длинным, я знаю все возможные сценарии и в каком порядке я хотел проверить сценарии, есть ли способ объединить их и узнать цену с одним запросом?
Благодаря
спасибо, сингл должен был FirstOrDefault, я редактировал этот вопрос, но ваше предложение не будет работать, так как несколько сценариев могут существовать в то же время, мне просто нужно проверить их последовательно, если есть строка, соответствующая правилу 1, использовать это, если не перейти к правилу 2 и т. д. – 03Usr