2012-10-04 52 views
0

我想获得一些属性(会话,交易,学生等)的详细信息,并且我使用linq在ProgressCard表中获得了他们的id。 并保存生成的数据以XML从表1中获取名称,其表2中的id使用linq

我这样做

public List<ShowProgressCard> GetCardListToShow() 
    { 
     try 
     { 
      List<ShowProgressCard> CardList = new List<ShowProgressCard>(); 
      using (ProgressCardLINQDataContext c = new ProgressCardLINQDataContext()) 
      { 
       CardList = (from card in c.GetTable<T_PROGRESSCARD>() 
          where card.RecordStatus.Equals(RecordStatus.Active) 
          select new ShowProgressCard 
          { 
           Session=(from session in c.T_SESSIONs 
             where session.Id.Equals(card.SessionId) 
             select session.Name).ToString(), 
           Trade=(from trade in c.T_TRADEs 
             where trade.Id.Equals(card.TradeId) 
             select trade.Name).ToString(), 
           Student=(from student in c.T_STUDENTs 
             where student.Id.Equals(card.StudentId) 
             select student.Name).ToString(), 
           Test=(from test in c.T_TESTs 
             where test.Id.Equals(card.TestId) 
             select test.Name).ToString(), 
           MaxMarks = (from test in c.T_TESTs 
              where test.Id.Equals(card.TestId) 
              select test.MaxMarks).ToString(), 
           MarksObtain=card.MarksObtain.ToString(), 
           Percentage=card.Percentage.ToString("N2") 
          }).ToList<ShowProgressCard>(); 
      } 
      return CardList; 
     } 
     catch 
     { 
      return new List<ShowProgressCard>(); 
     } 
    } 

但让我意外的值..

<ShowProgressCard> 
<Session>System.Collections.Generic.List`1[System.String]</Session> 
<Trade>System.Collections.Generic.List`1[System.String]</Trade> 
<Student>System.Collections.Generic.List`1[System.String]</Student> 
<Test>System.Collections.Generic.List`1[System.String]</Test> 
<MaxMarks>System.Collections.Generic.List`1[System.Int32]</MaxMarks> 
<MarksObtain>123</MarksObtain> 
<Percentage>0.000000000000000e+000</Percentage> 
</ShowProgressCard> 

请帮我跟踪的错误。

回答

1
      Session=(from session in c.T_SESSIONs 
            where session.Id.Equals(card.SessionId) 
            select session.Name).ToString(), 
          Trade=(from trade in c.T_TRADEs 
            where trade.Id.Equals(card.TradeId) 
            select trade.Name).ToString(), 
          Student=(from student in c.T_STUDENTs 
            where student.Id.Equals(card.StudentId) 
            select student.Name).ToString(), 
          Test=(from test in c.T_TESTs 
            where test.Id.Equals(card.TestId) 
            select test.Name).ToString(), 
          MaxMarks = (from test in c.T_TESTs 
             where test.Id.Equals(card.TestId) 
             select test.MaxMarks).ToString(), 

该块只会返回您的值的IEnumerables。在ToString()之前添加Single()或First():

MaxMarks = (from test in c.T_TESTs where test.Id.Equals(card.TestId) select test.MaxMarks).Single().ToString(), 
+0

非常感谢。 – mitali

+0

你能否请我青睐一件事,那就是我想要拿到的百分比是2位小数。我尝试ToString方法中的“N2”,但它的工作量很大。你知道为什么吗? – mitali

+0

MSDN知道“C#字符串格式”,但我不知道从内存中。 – TGlatzer

相关问题