0

私はlinqが初めてです。データベース内の 3 つのフィールドを検索する linq クエリを作成しようとしています。ただし、いずれかのフィールドが空白または何もない場合、そのフィールドはクエリに含まれません。

検索対象

Public Class Search
    Public Property firstName As String
    Public Property surname As String
    Public Property address As String
End Class

テーブル

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

私の試みですが、これではデータが返されません

(From it In db.user 
 Where (
     searchItems.firstName IsNot Nothing 
     AndAlso it.firstName.Contains(searchItems.firstName)) 
 AndAlso (searchItems.surname IsNot Nothing 
     AndAlso it.surname.Contains(searchItems.surname)) 
 AndAlso (searchItems.address IsNot Nothing 
     AndAlso it.fullAddress.Contains(searchItems.address)) 
 Select it).
 ToList

また、これを250レコードに制限する必要があります

前もってありがとうポール

4

1 に答える 1

0

各文字列チェックでは、値が空の文字列 ("") でないことをさらにチェックする必要があります。各文字列チェックに追加のチェックを追加すると、これを達成できるはずです。

(From it In db.user 
 Where (Not String.IsNullOrEmpty(searchItems.firstName)) Or (it.firstName.Contains(searchItems.firstName))
 AndAlso (Not String.IsNullOrEmpty(searchItems.surname) Or (it.surname.Contains(searchItems.surname)) 
 AndAlso (Not String.IsNullOrEmpty(searchItems.address) Or (it.fullAddress.Contains(searchItems.address)) 
 Select it).Take(250).ToList
于 2013-03-20T11:17:25.140 に答える