如果使用,如何使用 linq to sql
how to use linq to sql with if using
这是我的 with if 代码,但所有条件都是关键字,我如何使用 with or
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"));
我,对不起我的英语。我希望能告诉。
你可以这样做:
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));
}
并重复您的字符串值。
您似乎有一个部分可以通过复选框的文本进行搜索,这是我想出的更简单的方法之一:
首先将复选框放在面板或类似的东西中,以便它们在一个组中。那么代码就会变得简单如下:
var itm = panel
.OfType<CheckBox>()
.Where(x => x.Checked)
.Select(x => _search.Where(y => y.faturatipi.Equals(x.Text)));
请注意,使用此方法,前两个仍然需要一个 if。
您可以为每个复选框定义带有过滤器的字典:
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; }
}
这是我的 with if 代码,但所有条件都是关键字,我如何使用 with or
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"));
我,对不起我的英语。我希望能告诉。
你可以这样做:
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));
}
并重复您的字符串值。
您似乎有一个部分可以通过复选框的文本进行搜索,这是我想出的更简单的方法之一:
首先将复选框放在面板或类似的东西中,以便它们在一个组中。那么代码就会变得简单如下:
var itm = panel
.OfType<CheckBox>()
.Where(x => x.Checked)
.Select(x => _search.Where(y => y.faturatipi.Equals(x.Text)));
请注意,使用此方法,前两个仍然需要一个 if。
您可以为每个复选框定义带有过滤器的字典:
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; }
}