Ich habe ein Textfeld, Kombinationsfeld, Schaltfläche und DataGridView auf einem Formular, das zum Suchen und Zurückgeben von Kundeninformationen aus einer MSSQL-Ansicht (vCustomer) verwendet wird. Es funktioniert großartig, aber ich weiß, dass mein Code effizienter sein kann. Die vier Elemente in der Combobox stellen Spalten dar, die gesucht werden sollen.Dynamische Linq To Sql mit ComboBox und Column.Contains
Gibt es eine einfache Möglichkeit zur Umwandlung der folgenden in dynamische LINQ to SQL? Ich bin neu in C#. Ich habe ein paar andere Posts ausgecheckt, aber ich kann es nicht funktionieren sehen.
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
private void MainForm_Load(object sender, EventArgs e)
{
// columns to filter for
string[] list = new string[4];
list[0] = "Name";
list[1] = "CustomerAccountNo";
list[2] = "Telephone";
list[3] = "Postal";
// bind to combobox
cboColumn.DataSource = list;
cboColumn.SelectedIndex = 0;
}
private void btnSearch_Click(object sender, EventArgs e)
{
try
{
Cursor.Current = Cursors.WaitCursor;
CustomerSearchDataContext db = new CustomerSearchDataContext();
IEnumerable<vCustomer> customerQuery = null;
switch (cboColumn.SelectedIndex)
{
case 0:
customerQuery = from c in db.vCustomers
where c.Name.Contains(txtSearch.Text)
orderby c.CustomerAccountNo descending
select c;
break;
case 1:
customerQuery = from c in db.vCustomers
where c.Name.Contains(txtSearch.Text)
orderby c.CustomerAccountNo descending
select c;
break;
case 2:
customerQuery = from c in db.vCustomers
where c.Telephone.Contains(txtSearch.Text)
orderby c.CustomerAccountNo descending
select c;
break;
case 3:
customerQuery = from c in db.vCustomers
where c.Postal.Contains(txtSearch.Text)
orderby c.CustomerAccountNo descending
select c;
break;
}
customerBindingSource.DataSource = customerQuery;
dataGridView1.DataSource = customerBindingSource;
dataGridView1.Columns["CustomerId"].Visible = false;
}
catch (System.Data.SqlClient.SqlException ex)
{
MessageBox.Show("An Error Occured - " + ex.Message,"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
Cursor.Current = Cursors.Default;
}
}
}
fand ich eine Datei Dynamic.cs innerhalb der CSharpSamples Dateien genannt. Diese Datei hat den richtigen Namensraum - meinst du das? Ich werde es ausprobieren. – robnardo
ja Dynamic.cs hat die Dynamic Linq-Bibliothek – Rony