对于发生的任何事务,都会在我的表中插入一行。
我有如下表(事务)
ID-数量
1------------150.00
2- 246.00
3- 100.00
4- 201.00
如果以上交易使用多种投标类型(现金、信用卡等)进行,则对于每个投标类型,将在另一个表中插入一行。
这个新表格(Tender)如下所示
ID-TenderType- TransactionId
1- 10 -1
2-20-2
3-10-2
上面的内容告诉我们,第一笔交易(来自Transactions表,金额150.00)发生时只有一个招标类型(10).So一行在招标表格中。
第二笔交易(金额246.00)发生在两种投标类型(10和20).So两行的招标表格中。
现在,我希望输出结果为
金额- TenderType
150.00 - 10
246.66-10/20
现在我正在用c#编写一个linq查询,如果投标表中的每个交易表中的每个金额都有多行,它将返回两行。
我的查询如下所示:
(from T in context.Transactions
join TT in context.TenderType on T.ID equals TT.TransactionId
select new myModel
{
Amount = T.Amount,
TenderType = TT.TenderType
}).ToList();对于这个查询,我的输出如下所示:
金额- TenderType
150.00 - 10
246.66-------10
246.66-------20
但是我的输出应该是这样的:
金额- TenderType
150.00 - 10
246.66-10/20
如何修改我的查询来实现这一点?
提前谢谢。
发布于 2015-03-30 18:19:08
尝尝这个
(from T in context.Transactions
select new myModel
{
Amount = T.Amount,
TenderType = context.TenderType.Where(x=>x.TransactionId==T.ID).Select(x=>x.TenderType).FirstOrDefault()
}).ToList();发布于 2015-03-30 18:21:13
听起来你可以有一个从交易到投标的one to many关联。
public class Transaction {
public int ID { get; set; }
public double Amount { get; set; }
public virtual ICollection<Tender> Tenders { get; set; }
}
from T in context.Transactions
select new {
Amount = T.Amount,
TenderTypes = T.Tenders.Select(t => t.TenderType)
}发布于 2015-03-30 18:48:49
试试这个:-
var result= (from T in context.Transactions
join TT in context.TenderType
on T.ID equals TT.TranscationID into g
select new
{
Amount = t.Amount,
TenderType = String.Join("/",g.Select(x => x.TenderTypeID))
}).Where(x => !String.IsNullOrEmpty(x.TenderType));https://stackoverflow.com/questions/29343554
复制相似问题