我想通过CustomerID
,Category
,Store
和City
选择金额。
如果可以,请更正此查询?
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;
说明:
如果我没记错的话,您需要根据以下字段将amount
列的值分组:
[CustomerID
,Category
,Store
和City
。
在这种情况下,以下代码可能是您的问题的答案:
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();
谢谢大家的帮助。我使用此代码,它成功完成工作:
使用(var db = new dbDataContext()){var datasource = 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();