如何运行查询以将结果系统地添加到表或列表中

本文关键字:添加 系统地 列表 结果 何运行 运行 查询 | 更新日期: 2023-09-27 18:00:56

基本上,这就是我想要做的。

如果数据集是这样的:

|----------------------------------------------|
|ShopName      |Fruit                          |
|----------------------------------------------|
|Kens Shop     |Eggplant                       |
|Kens Shop     |Potato                         |
|Kens Shop     |Asparagus                      |
|Bens Shop     |Eggplant                       |
|Bens Shop     |Carrot                         |
|Sarahs Shop   |Potato                         |
|Sarahs Shop   |Asparagus                      |
------------------------------------------------

我想要的结果是:

----------------------------------
|Vegetable   |Count              |
|---------------------------------
|Eggplant    |2                  |
|Potato      |2                  |
|Asparagus   |2                  |
|Carrot      |1                  |
----------------------------------

对于这个特殊的例子,我真的不在乎商店里有多少蔬菜。

理想情况下,我想把"商店名称"放在一个多行文本框中,并通过C#ASP.NET前端对其进行迭代,然后将其全部绑定回GridView进行查看。

 For Each strLine As String In TextBox1.Text.Split(vbNewLine)
            ' somehow add the results of this "shop" to an existing table or list, and add the results to what is already there
        Next

如果我能以某种方式使用Linq-to-SQL来实现这一点,那将是非常棒的。

所以。。。。什么是Linq到SQL的逻辑来实现这样的事情?或者,如果不可能,可以在基本的SQL查询中完成吗?

感谢:(

如何运行查询以将结果系统地添加到表或列表中

SQL语法

SELECT Fruit AS Vegetable, Count(*) AS [Count] 
    FROM Shops 
    GROUP BY Fruit

Linq语法(伪代码-可以优化(。首先创建两个处理输入和分组输出的助手struct

struct Shop
{
    public string ShopName { get; set; }
    public string Fruit { get; set; }
}
struct GrouppedFruit
{
    public string Vegetable { get; set; }
    public int Count { get; set; }
}

现在查询数据库以返回SELECT查询并将其插入列表

DataTable table = manager.GetData("SELECT * FROM Shops");
var shops = new List<Shop>();
foreach (DataRow row in table.Rows)
{
    shops.Add(new Shop
    {
        ShopName = row["ShopName"].ToString(),
        Fruit = row["Fruit"].ToString()
    });
}

使用LINQ 的分组输出

//query syntax
var grouppedFruits = (from shop in shops
                        group shop by shop.Fruit into grouping
                        select new GrouppedFruit
                        {
                            Vegetable = grouping.Key,
                            Count = grouping.Count()
                        }).ToList();
//method syntax
var grouppedFruits1 = shops
    .GroupBy(shop => shop.Fruit)
    .Select(g => new GrouppedFruit 
    { 
        Vegetable = g.Key, 
        Count = g.Count() 
    }).ToList();