2015-05-13 1 views
0

это мой с тем, если код, но все условия были и ключевое слово, как я могу использовать с иликак использовать LINQ для SQL с при использовании

if (cbAlis.Checked) 
      _search.Where(x => x.faturaturu.ToString().Equals(1)); 
     if (cbSatis.Checked) 
      _search.Where(x => x.faturaturu.ToString().Equals(2)); 
     if (cbAcik.Checked) 
      _search.Where(x => x.faturatipi.Equals("Açık")); 
     if (cbKapali.Checked) 
      _search.Where(x => x.faturatipi.Equals("Kapalı")); 
     if (cbIade.Checked) 
      _search.Where(x => x.faturatipi.Equals("İade")); 
     if (cbZayiIade.Checked) 
      _search.Where(x => x.faturatipi.Equals("Zayi İade")); 
     if (cbMuhtelif.Checked) 
      _search.Where(x => x.faturatipi.Equals("Muhtelif")); 
     if (cbIptal.Checked) 
      _search.Where(x => x.faturatipi.Equals("İptal")); 

я, извиняюсь за мой английский. я надеюсь, мог бы сказать.

+0

Вам просто нужно '_search = _search.Where (...);' – Johnbot

+0

я пытался, но не работает – lkmcelik

+0

Добавить все эти флажки ' IEnumerable' или 'IDictionary' с ключевыми строками. Написание 'if' для каждого из них будет утомительным. Если вы повторяете что-то снова и снова, это верный признак того, что его нужно реорганизовать. – CodingIntrigue

ответ

0

Вы могли бы сделать что-то вроде этого:

var urufilters = new List<int>(); 

if (cbAlis.Checked) 
    filters.Add("1"); 
if (cbSatis.Checked) 
    filters.Add("2"); 

if (filters.Any()) 
{ 
    _search = _search.Where(x => filters.Contains(faturaturu)); 
} 

И повторить для строковых значений.

0

Как мне кажется, что у вас есть раздел, где вы ищите в тексте флажка, это один из самых простых, что я придумал:

Сначала поставить галочки в панели, или что-то подобное так что они находятся в группе. Тогда код будет прост как это:

Обратите внимание, что при использовании этого метода первым двум по-прежнему необходимо использовать if.

0

Вы можете определить словарь с фильтрами для каждого чекбокса:

public partial class Form1 : Form 
    { 
     private Dictionary<CheckBox, Func<Model, bool>> _checkboxFilters; 
     private IEnumerable<Model> _search; 

     public Form1() 
     { 
      InitializeComponent(); 

      _search = new List<Model> 
      { 
       new Model {Property1 = 1, Property2 = "aaa"}, 
       new Model {Property1 = 2, Property2 = "bbb"}, 
       new Model {Property1 = 3, Property2 = "Açık"}, 
       new Model {Property1 = 4, Property2 = "Açık"}, 
      }; 

      _checkboxFilters = new Dictionary<CheckBox, Func<Model, bool>> 
      { 
       {checkBox1, new Func<Model,bool>(x => x.Property1.Equals(1))}, 
       {checkBox2, new Func<Model,bool>(x => x.Property2.Equals("Açık"))} 
      }; 
     } 

     private void button4_Click(object sender, EventArgs e) 
     { 
      var checkBoxes = this.Controls.OfType<CheckBox>().ToList(); 
      var checkedCheckBoxes = checkBoxes.Where(n => n.Checked); 

      foreach (var checkBox in checkedCheckBoxes) 
      { 
       if (_checkboxFilters.ContainsKey(checkBox)) 
       { 
        var filter = _checkboxFilters[checkBox]; 
        _search = _search.Where(filter); 
       } 
      } 
     } 
    } 

    class Model 
    { 
     public int Property1 { get; set; } 
     public string Property2 { get; set; } 
    } 
Смежные вопросы