UrbanRider
@UrbanRider

Запрос данных из бд с множеством условий

Добрый день, уважаемый %username%.
Есть класс C# следующего содержания:

namespace Dzen_volunteer
{
    public class Volunteer : DataContext
    {
        public Table<Person> Persons;
        public Volunteer(string connection) : base(connection) { }
    }

    [Table(Name = "Persons")]
    public class Person
    {
        string _guid;
        [Column(IsPrimaryKey = true, Storage = "_guid")]
        public string Guid
        {
            get
            {
                return this._guid;
            }
            set
            {
                this._guid = value;
            }
...куча полей...
        }
    }
}


Чтобы получить полный список записей из бд (аналог SELECT ALL) я делаю следующее:

foreach (Person pers in db.Persons)
{
this.listPersons.Add(pers);
this.personList.Items.Add(pers.FirstName + " " + pers.FatherName + " " + pers.LastName);
}


Подскажите пожалуйста, как правильно сделать выборку из бд сразу по нескольким полям, возможно ли просто искать эквиваленту классу Person в бд?
Например как нибудь типа задаем экземпляру класса person несколько полей и вместо того чтобы писать кучу:

where pers.Field==""


написать нечто типа:

where pers equals person


Сразу прошу прощения за говнокод. Первый опыт работы с linq to sql. Учился на msdn.
  • Вопрос задан
  • 5820 просмотров
Решения вопроса 1
UrbanRider
@UrbanRider Автор вопроса
Если кому-нибудь еще интересно, то все решается совсем просто, как оказалось.

Следует использовать where конструкцию примерно следующего вида:
where pers.FirstName == (AddForm.Person.FirstName == "" ? pers.FirstName : AddForm.Person.FirstName) && pers.LastName==(AddForm.Person.LastName=="" ? pers.LastName:AddForm.Person.LastName) ... остальные условия...
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
eforce
@eforce
Насколько я понял, нужно сделать выборку по массиву значений какого-то поля, тогда Вам нужно использовать Contains, что создаст WHERE IN конструкцию в SQL. Как пример можете посмотреть эту ссылку: Linq-To-Sql: Alternative to the ‘WHERE IN’ Expression
Ответ написан
@Seter17
хм, не очень понял что вы хотите, но судя по написанному выше, может это поможет?
Dynamic LINQ
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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