2013-04-08 2 views
1
Project_Detail pro = new Project_Detail(); 
string title=Ttitle.Text; 
string year1=Tyear.Text; 
string key = Tkeywrds.Text; 
string area = Ddl_area.Text; 
string categ = Ddl_catgry.Text; 
string tech = Ddl_tech.Text; 
string type =Ddl_type.Text; 

var q = from obj in da.Project_Details 
     where obj.Project_Title.Contains(title) 
       || obj.Submission_Date.Contains(year1) 
       || obj.Keywords.Contains(key) 
       || obj.Project_Area.Contains(area) 
       || obj.Project_Category.Contains(categ) 
       || obj.Project_Technology.Contains(tech) 
       || obj.Project_Type.Contains(type) 
     select obj; 

if (q != null) 
{ 
    DetailsView1.DataSource = q; 
    DetailsView1.DataBind(); 
} 
else 
{ 
    Literal1.Text = "Data not found"; 
} 

Этот код дает последнюю запись таблицы, а также не дает результата условия. Я хочу результат всех условий и хочу использовать LIke satatement.Поиск нескольких столбцов с использованием нескольких элементов управления в asp.net с использованием linq

+0

, если вы хотите использовать SQL, как: 'SqlMethods.Like (obj.parameter)'. –

+0

Если какая-либо из строк поиска пуста, ваш запрос вернет все элементы, так как 'myString.Contains (" ")' всегда возвращает 'true'. – alzaimar

ответ

1

q не имеет значения null. Однако это может быть пустым. Таким образом, вы должны изменить свой код

if (q.Any()) // <<----- 
{ 
    DetailsView1.DataSource = q; 
    DetailsView1.DataBind(); 
} 
else 
{ 
    Literal1.Text = "Data not found"; 
} 
+0

его не работает с несколькими опциями поиска. Работает с одним запросом как obj.Project_Title.Contains (заголовок), это работает , но когда у него несколько условий вроде obj.Project_Title.Contains (title) || obj.Submission_Date.Contains (year1) || obj.Keywords.Contains (ключ) || obj.Project_Area.Contains (area) || obj.Project_Category.Contains (categ) || obj.Project_Technology.Contains (tech) || obj.Project_Type.Contains (type) его не работает. Он дает всю запись, которая в таблице Пожалуйста, помогите ... – avinash

+0

Проблема заключается в вашей статье 'where'. Если у вас есть профилировщик, получите запрос и проверьте свои данные. – alzaimar

+0

Запрос Linq для операции множественного поиска с несколькими элементами управления – avinash

0

Вы также можете использовать метод подсчета .Count()

if (q.count()>0) 
{ 
    DetailsView1.DataSource = q; 
    DetailsView1.DataBind(); 
} 
else 
{ 
    Literal1.Text = "Data not found"; 
} 
+0

его не работает с несколькими опциями поиска. Работает с одним запросом как obj.Project_Title.Contains (название) это работает , но когда у него несколько условий, таких как obj.Project_Title.Contains (title) || obj.Submission_Date.Contains (year1) || obj.Keywords.Contains (ключ) || obj.Project_Area.Contains (area) || obj.Project_Category.Contains (categ) || obj.Project_Technology.Contains (tech) || obj.Project_Type.Contains (type) его не работает. Он дает всю запись, которая в таблице Пожалуйста, помогите ... – avinash

Смежные вопросы