Условное выражение несколько полевого поиска и просачивания LINQ

Чтобы сделать это более ясным ответом на основе комментария @Gideon Engelberths, 5-го в вопросе, я пропустил «использование системы»; используя директиву в моем классе:

using System.Reactive.Linq;
using System;

, которая затем исправила проблему с компилятором. Спасибо Гедеон.

5
задан Jason Plank 21 November 2011 в 13:36
поделиться

2 ответа

Одна альтернатива, которую я использовал в SQL, которая может быть реализована и в Linq, - это

var p = from p in Person
       where p.Name == Name_TextBox || Name_TextBox == String.Empty
       select p;

(Обратите внимание, что ваш linq использует синтаксис SQL, который не компилируется. Также вы можете 'не объявляйте переменную, как вы делаете, без прямого присвоения значения)

5
ответ дан 18 December 2019 в 10:48
поделиться

Попробуйте такой код

       string personName = txtPersonName.Text;
       int personAge = Convert.ToInt32(txtAge.Text);
       var opportunites =  from p in this.DataContext.Persons
                            select new
                            {
                                p.PersonID,
                                p.Name,
                                p.Age,
                                p.Gender
                            };

        if (personsID != 0)
            opportunites = opportunites.Where(p => p.PersonID == personID);

        if (personName != string.Empty)
            opportunites = opportunites.Where(p => p.Name.StartsWith(personName));

        if (personAge != 0)
            opportunites = opportunites.Where(p => p.Age == personAge);

Это будет работать нормально. Если personName не указано, оно не будет добавлено туда, а если указано, оно будет добавлено.

9
ответ дан 18 December 2019 в 10:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: