从一张表中选择金额

Posted

技术标签:

【中文标题】从一张表中选择金额【英文标题】:Select amount from one table by 【发布时间】:2020-09-12 15:44:00 【问题描述】:

我想通过CustomerIDCategoryStoreCity 选择金额。

如果可以,请更正此查询?

var query = db.Amounts.Where(x => x.CustomerID == Convert.ToInt32(lkpCustomer.EditValue) &&
                  x.CatagoryID == Convert.ToInt32(lkp_Catagory.EditValue) && x.StoresID == Convert.ToInt32(lkp_from.EditValue) &&
                  x.CityID == Convert.ToInt32(lkp_to.EditValue)).Select(x => x.Amount1).ToList();
RateSpinEdit.EditValue = query;

说明:

【问题讨论】:

编辑器有一个代码格式化选项,可以让你的代码可读。 您可以进行 3 个查询 - 每个类别一个、每个客户 1 个、每个商店 1 个和每个城市 1 个。尝试再压缩它只会导致问题并且不会提供任何有用的数据。 您是否收到任何编译器错误?查询看起来不错,但如果没有表定义,我无法判断您是否会收到编译器错误、运行时异常或没有数据。你用什么来获取你发布的图片?图片是没有 WHERE 过滤的 c# 中的结果吗?您的查询仅返回一个值 (x.Amount1) 我认为您想修改 Select 如下: .Select(x => new id = x.ID, category = x.CatagoryID, store = x.StoresID) .ToList(); 如果您想将结果应用到 SpinEdit 控件,那么请尝试 db.Amounts.Where(...).Select(x=>x.Amount).ToList() 而不是 db.Amounts.Where(...).Select(x=>x.Amount).FirstOrDefault() 您好!您的查询需要有更多详细信息。您能否更详细地提出您的要求? 【参考方案1】:

如果我没记错的话,您需要根据以下字段对amount 列的值进行分组:

CustomerIDCategoryStoreCity

在这种情况下,下面的代码可能是您问题的答案:

var query = (from p in Amounts
         group p by new  p.CustomerID, p.CatagoryID, p.StoresID, p.CityID
         into grp
         where 
         (
            p => p.CustomerID    == Convert.ToInt32(lkpCustomer.EditValue) &&
                 p.CatagoryID    == Convert.ToInt32(lkp_Catagory.EditValue) &&
                 p.StoresID      == Convert.ToInt32(lkp_from.EditValue) &&
                 p.CityID        == Convert.ToInt32(lkp_to.EditValue)            
         )
         select new 
         
                grp.key.ID,
                grp.key.CategoryID,
                grp.key.CustomerID,
                grp.key.StoresID,
                grp.key.CityID,
                SumOfAmount = grp.Sum(p => p.Amounts)            
         ).ToList();

【讨论】:

【参考方案2】:

谢谢大家的帮助。我使用这段代码,它成功了:

使用 (var db = new dbDataContext()) var 数据源 =db.amounts;

            var query = from amount in datasource
                        where amount.CatagoryID == Convert.ToInt32(lkp_Catagory.EditValue)&&
                        amount.CustomerID == Convert.ToInt32(lkpCustomer.EditValue)&&
                        amount.StoresID == Convert.ToInt32(lkp_from.EditValue)&&
                        amount.CityID == Convert.ToInt32(lkp_to.EditValue)
                        select amount;
            RateSpinEdit.EditValue = query.Select(x => x.Amount1).FirstOrDefault();

【讨论】:

以上是关于从一张表中选择金额的主要内容,如果未能解决你的问题,请参考以下文章

从一张表中选择不同的值并限制它们

MySQL:仅当不在另一张表中时才从一张表中选择电子邮件?

Laravel 从一张表中选择价格最低的独特产品

SQL 查询只从一张表中拉取数据

MySQL 从一张表查询 - 选择相同的字段两次

复制一张表的数据