Как запросить DataSet и установить результат в качестве DataSource для некоторого элемента управления?(C # winforms) - PullRequest
1 голос
/ 13 октября 2010

Я копаюсь в документации по Microsoft Visual Studio и нашел эту статью в C # Reference (ms-help: //MS.VSCC.v90/MS.MSDNQTR.v90.en/dv_csref/html/df01e266-5781. -4aaa-80c4-67cf28ea093f.htm), это примерно Interface Interface. Вот пример кода:

class SelectSample1
{   
    static void Main()
    {           
        //Create the data source
        List<int> Scores = new List<int>() { 97, 92, 81, 60 };

        // Create the query.
        IEnumerable<int> queryHighScores =
            from score in Scores
            where score > 80
            select score;

        // Execute the query.
        foreach (int i in queryHighScores)
        {
            Console.Write(i + " ");
        }            
    }
}
//Output: 97 92 81

Вместо List возможно ли также запросить DataTable и установить результат запроса в качестве источника данных для DataGridView? Если да, предположим, у меня есть эта структура:

Fruit       |   CategoryID
---------------------------------------
Lemon       |   1
Orange      |   1
Apple       |   2
Pear        |   2

Может ли кто-нибудь дать мне пример (если возможно, для подхода новичка .. :). Что я хочу, чтобы отобразить результат в DataGridView. Показать все фрукты, где его CategoryID равен 1. Пожалуйста, помогите,

Заранее спасибо, ребята.

Ответы [ 2 ]

0 голосов
/ 13 октября 2010

Попробуйте это

var results = from row in dataTable.AsEnumerable()
where row.Field<int>("CategoryID") == 1
select row ;

, и вы сможете легко привязать строку результатов к своему элементу управления.

0 голосов
/ 13 октября 2010

Вам нужно использовать AsEnumerable () расширение Databe для выбора строк и привязки к DataGridView следующим образом:

DataTable table = new DataTable();
table.Columns.Add("Fruit");
table.Columns.Add("ID", typeof(int));
table.Rows.Add(new object[] { "Lemon", 1 });
table.Rows.Add(new object[] { "Orange", 1 });
table.Rows.Add(new object[] { "Apple", 2 });
table.Rows.Add(new object[] { "Pear", 2 });

BindingSource bs = new BindingSource();
bs.DataSource = from row in table.AsEnumerable()
                           where row.Field<int>("ID") == 1
                           select new {Fruit = row.Field<string>("Fruit"), ID = row.Field<int>("ID")};

dataGridView1.DataSource = bs;
...