/ / Как да създадем заявка като selectbyexample, използвайки linq-to-entities? - c #, linq, entity-framework, linq-to-entities

Как да създадем заявка като examplebyexample, използвайки linq-to-entities? - c #, linq, entity-framework, linq-to-entities

Как да създадем заявка като examplebyexample, използвайки linq-to-entities?

Например:

public class Person
{
public string Name {get; set;}
public int Age {get; set;}
public string City {get; set;}
}

Ако имах нова Лице () с всички свойства със стойности са null, въпросът трябва да ми върне всички записи от таблицата Лице.

Но ако преминем обект с имот Age = 25, заявката трябва да ми върне всички записи с възраст = 25;

Бих искал да създам един филтър за заявки, който да приеме някое от свойствата и ако някой не го пренебрегне.

Отговори:

1 за отговор № 1
       var p = new Person {Age = 25};

src.Where(el => p.Age == null ? true : el.Age == p.Age)
.Where(el => p.Name == null ? true : el.Name == p.Name)
.Where(el => p.City == null ? true : el.City == p.City);

в класа си за човек, възрастта трябва да бъде нулируема (int? вместо int).


1 за отговор № 2

На първо място вашият пример не може да има всички свойства null защото Age не е нула.

Както и да е, това се прави по следния начин:

public static IQueryable<Person> QueryByExample(Person example, YourContext context)
{
var query = context.Persons;

if (example.Name != null)
{
string name = example.Name;
query = query.Where(p => p.Name == name);
}

// Same for other properties

return query;
}

0 за отговор № 3

Нуждаете се от персонализиран метод Linq. Ето как можете да го направите:

http://msdn.microsoft.com/en-us/library/cc981895.aspx

Това може да ви помогне да ретумирате динамично чрез свойствата на класа си

c # - Как да повтаряме през класовите полета и да настроим свойства