如何运行查询以将结果系统地添加到表或列表中
本文关键字:添加 系统地 列表 结果 何运行 运行 查询 | 更新日期: 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();