我的数据库中有一个表结构,如下所示:
Items <= User => Transactions
因此,在C#映射的类中,用户包含项目和事务的集合...(一对多关系)。
所以现在我要做的是:
var filteredProducts = ctx.Transactions.Where(x => x.SearchedUserID ==
firstRequest.SearchedUserID)
.OrderByDescending(x => x.TransactionDate)
.GroupBy(x => x.TransactionID ).Select(x => new ResultItem()
{
TransactionID = x.Key,
SaleNumber = x.Sum(y => y.QuantityPurchased)
})
.ToList();
如您所见,我正在按事务表中的数据分组...现在,如果可能的话,我想在这里做的就是以一种简便的方式将User表跨入Items表并选择一个我要指定的特定属性需要该分组项目,即CurrentPrice,并且“交易”表中不包含此数据...
因此,在select语句中,我想像这样提取CurrentPrice属性:
.Select(x => new ResultItem()
{
TransactionID = x.Key,
SaleNumber = x.Sum(y => y.QuantityPurchased),
CurrentPrice = // somehow go to Items table and pick up this data
})
.ToList();
有人可以帮我吗 ?
最佳答案
据我了解您的表架构,您应该在通过SearchUserId
过滤数据时从用户表开始查询,因此,首先要获取具有用户表关系的数据
注意:由于我不知道您的表架构UserId
在此示例代码中被视为User
表主键以及Transactions
和Items
表外键
var result = (from usr in ctx.User
where usr.UserId == firstRequest.SearchedUserID
select new {
UserId = usr.UserId,
Transactions = usr.Transactions,
Items = usr.Items
})
然后尝试对数据进行筛选,分组,...。但是,如果要选择问题中提到的内容,则在
Items
和Transactions
表之间应该具有关系。