Ответ 1
Думаю, ты просто отдал его назад:
mycontext.persons
.Where(t =>
t.Firstname.Contains(search) ||
t.Lastname.Contains(search) ||
t.Description.Contains(search))
.ToList();
Я пытаюсь сделать подходящий запрос linq, чтобы соответствовать моим поисковым функциям.
У меня есть таблица со следующими столбцами: "имя" | 'фамилия' | 'описание'. со следующими данными: "Петр" | 'Малдер' | "Это небольшое описание."
Мое ключевое слово для поиска может быть что-то вроде: "peter" или "небольшое описание".
Теперь, если я использую следующее выражение linq в лямбде:
mycontext.persons
.Where(t =>
search.Contains(t.Firstname) ||
search.Contains(t.Lastname) ||
search.Contains(t.Description).Select(p => p)
.ToList();
Теперь я получаю свой результат, когда использую "Питер", но если я использую "Пит" или "Небольшое описание", я не получаю никаких результатов. Как я могу сделать свое выражение linq, чтобы оно могло искать в данных столбца совпадения?
Думаю, ты просто отдал его назад:
mycontext.persons
.Where(t =>
t.Firstname.Contains(search) ||
t.Lastname.Contains(search) ||
t.Description.Contains(search))
.ToList();
Одним из возможных (но, вероятно, не оптимальным решением) было бы добавить все ваши поля и сделать Contains
в поисковом терминах.
var result = persons.Where(q => (q.Description + " " q.FirstName + " " q.LastName)
.ToLower()
.Contains(searchTerm.ToLower()))
.ToList();
попробуйте этот код.
private void SearchData()
{
Model1Container model = new Model1Container();
try
{
var query = model.Scholars.AsQueryable();
if (!string.IsNullOrEmpty(this.txtSearch.Text))
{
// query = query.Where(x=>x.ScholarName.StartsWith(txtSearch.Text));
query = (from Schl in model.Scholars
where Schl.ScholarName.StartsWith(txtSearch.Text) ||
Schl.PhoneRes.StartsWith(txtSearch.Text) ||
Schl.PhoneOff.StartsWith(txtSearch.Text) ||
Schl.Mobile.StartsWith(txtSearch.Text) ||
Schl.Email.StartsWith(txtSearch.Text)
orderby Schl.ScholarName
select Schl);
}
this.dgvScholarList.DataSource = query.ToList();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Взгляните на NinjaNye.SearchExtensions. Это может быть именно то, что вам нужно.