2013-03-26 4 views
0

Привет пожалуйста, вы можете сообщить мне о том, как лучше достичь фильтрации на нескольких столбцов в LINQVB.net LINQ фильтр по нескольким столбцам

Таблица:

CREATE TABLE [dbo].[user] (
[id] [int] IDENTITY(1,1) NOT NULL, 
[firstName] [nvarchar](50) NULL, 
[surname] [nvarchar](50) NULL, 
[fullAddress] [nvarchar](1050) NULL 

Я обычно использую SQL для этого

Dim firstname as string = 'bob' 
Dim surname as String = 'holdness' 
Dim address as String = 'blockbuster street' 
Dim Stmquery as string = 'Select * from users ' 
if not String.isnullorEmpty(firstname) or not String.isnullorEmpty(surname) or not String.isnullorEmpty(address) then 
Stmquery = Stmquery & "where" 
end if 
if not String.isnullorEmpty(firstname) then 
Stmquery = Stmquery & " firstname = " & firstname 
end if 
    if not String.isnullorEmpty(surname) then 
Stmquery = Stmquery & " surname = " & surname 
end if 
    if not String.isnullorEmpty(address) then 
Stmquery = Stmquery & " address = " & address 
end if 

Так в основном, если строка пустая, она покажет все записи для этого столбца

Может кто-то показать мне, как это сделать в LINQ

Спасибо Paul

ответ

1

Я предполагаю, что у вас уже есть LINQ к SQL DbContext подготовлен с Users таблице отображены.

Вы можете легко расширить свой запрос, потому что это не будет выполняться с базой данных, пока вы не вызовете ToList(), ToArray(), First(), Last() и т.д.

Dim query = dbContext.Users; 

If Not String.IsNullOrEmpty(firstname) Then 
    query = query.Where(Function(u) u.FirstName = firstname) 
End If 

If Not String.IsNullOrEmpty(surname) Then 
    query = query.Where(Function(u) u.Surname = surname) 
End If 

If Not String.IsNullOrEmpty(address) Then 
    query = query.Where(Function(u) u.Address = address) 
End If 

' query execution is here, after next line ' 
Dim results = query.ToList() 
+0

благодарит своих работал как сон – Easty

Смежные вопросы