首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于返回单行的linq查询

用于返回单行的linq查询
EN

Stack Overflow用户
提问于 2015-03-30 18:11:59
回答 3查看 1K关注 0票数 1

对于发生的任何事务,都会在我的表中插入一行。

我有如下表(事务)

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查询,如果投标表中的每个交易表中的每个金额都有多行,它将返回两行。

我的查询如下所示:

代码语言:javascript
复制
(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

如何修改我的查询来实现这一点?

提前谢谢。

EN

回答 3

Stack Overflow用户

发布于 2015-03-30 18:19:08

尝尝这个

代码语言:javascript
复制
 (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();
票数 0
EN

Stack Overflow用户

发布于 2015-03-30 18:21:13

听起来你可以有一个从交易到投标的one to many关联。

代码语言:javascript
复制
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)
}
票数 0
EN

Stack Overflow用户

发布于 2015-03-30 18:48:49

试试这个:-

代码语言:javascript
复制
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));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29343554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档