0

ユーザーの入力と選択に基づいてレコードをフィルター処理するLINQクエリを作成していました。一部の入力は、ユーザーから提供されない場合があります。だから私は与えられた入力に基づいてフィルタリングする必要があります。5つのオプション入力のうち1つだけに値を付けてみました。しかし、クエリは何も返しません。適切なクエリを見つけるのを手伝ってください。クエリを見た後、あなたはよりよく理解することができます。

コード

var model = (from items in Db.Items
             where ((items.ItemNo == null || 
                     items.ItemNo == String.Empty) ||
                    ((items.ItemNo.CompareTo(DD.FromItemNo) >= 0) &&
                     (items.ItemNo.CompareTo(DD.ToItemNo) <= 0))) &&
                   (items.InfoTypeId == 0 ||
                    (items.InfoTypeId == DD.InfoType)) &&
                   (items.CreatedOn == null ||
                    (items.CreatedOn >= DD.Start &&
                     items.CreatedOn <= DD.End)) &&
                   (items.StatusId == 0 ||
                    (items.StatusId == DD.Status)) &&
                   (items.LocationId == 0 ||
                    (items.LocationId == DD.Location)) &&
                   (items.CollectionId == 0 ||
                   (items.CollectionId == DD.Collection))
             select new ViewModel()
             {
                 Itemid = items.Id,
                 INo = items.ItemNo,
                 BTags = (from asd in Db.BibContents
                          where asd.BibId == items.BibId &&
                                asd.TagNo == "245" &&
                                asd.Sfld == "a"
                          select asd.Value).FirstOrDefault(),
                 Sid = (from stat in Db.ItemStatus1
                        where stat.Id == items.StatusId 
                        select stat.Description).FirstOrDefault(),

                 Option = DD.Option,
                 CurrItemNo = DD.ItemNumber
             }).ToList();
4

1 に答える 1

0

の値ではなく、 sまたはsの値DDを確認する必要があります。null0items

var model = (from items in Db.Items
    where 
    (
       (DD.ItemNo == null || DD.ItemNo == String.Empty) 
       || (items.ItemNo.CompareTo(DD.FromItemNo) >= 0 && items.ItemNo.CompareTo(DD.ToItemNo) <= 0)
    ) 
    && (DD.InfoTypeId == 0 || (items.InfoTypeId == DD.InfoType)) 
    && (DD.CreatedOn == null || (items.CreatedOn >= DD.Start && items.CreatedOn <= DD.End)) 
    && (DD.StatusId == 0 || (items.StatusId == DD.Status))
    && (DD.LocationId == 0 || (items.LocationId == DD.Location)) 
    && (DD.CollectionId == 0 || (items.CollectionId == DD.Collection))
    select ...
于 2013-02-21T11:53:28.587 に答える