0

.xls以下は、ファイルにエクスポートするために ASP MVC 3 コントローラーで使用している 2 つのテーブルの linq クエリです。ただし、クエリを実行しているテーブルには、セカンダリ テーブルと 1 対多の関係があります。FixedStatsコードをステップ実行すると、linq クエリが正常に実行され、 フィールドとフィールドに正しい量の情報が含まれていることがわかりVariableStatsます。ただし、ファイルをスプレッドシートにエクスポートすると、これら 2 つの列はどこにも見つかりません。

    public void ExportToCsv()
    {

        var grid = new System.Web.UI.WebControls.GridView();

        //join a in db.BankListAgentId on b.ID equals a.BankID
        var banks = from b in db.BankListMaster

                          where b.Status.Equals("A")
                          select new
                          {
                              BankName = b.BankName,
                              EPURL = b.EPURL.Trim(),
                              AssociatedTPMBD = b.AssociatedTPMBD,
                              Tier = b.Tier,
                              FixedStats = from a in db.BankListAgentId
                                           where a.BankID == b.ID &&
                                                 a.FixedOrVariable.Equals("F")
                                               select new { a.AgentId },
                              VariableStats = from a in db.BankListAgentId
                                              where a.BankID == b.ID &&
                                                    a.FixedOrVariable.Equals("V")
                                              select new { a.AgentId }, 
                               Attachment = b.Attachment,
                              Status = b.Status
                          };

        grid.DataSource = banks.ToList();
        grid.DataBind();

        Response.ClearContent();
        Response.AddHeader("content-disposition", "attachment; filename=BankList.xls");
        Response.ContentType = "application/excel";
        StringWriter sw = new StringWriter();
        HtmlTextWriter htw = new HtmlTextWriter(sw);
        grid.RenderControl(htw);
        Response.Write(sw.ToString());
        Response.End();
    }
4

1 に答える 1

1

String.Join値のリストをAgentId1 つの文字列に結合し、それをグリッドに提供するために使用できます。現在FixedStats、 とVariableStatsはリストであり、グリッド セルの値として表示することはできません。

  select new
  {
      FixedStats = String.Join("|", from a in db.BankListAgentId
                   where a.BankID == b.ID &&
                         a.FixedOrVariable.Equals("F")
                       select a.AgentId.ToString()),
  }

Moby のスタント ダブルが気づいたように、専用のビュー モデルを作成することをお勧めします。ORM<->SQL 変換の問題により、上記の解決策が機能しない場合があります。

専用の ViewModel の例:

public class ExportVM
{
    public List<int> FixedStats { get; set; }
    public FixedStatsCombined 
    {
        get
        {
             return String.Join("|", FixedStats.Select(item => item.ToString());
        }
    }
}
于 2013-04-17T21:35:26.750 に答える