簡體   English   中英

System.Linq.Enumerable + WhereSelectListIterator`2

[英]System.Linq.Enumerable+WhereSelectListIterator`2

我想通過我的MVC控制器下面創建一種XML格式:

 public IHttpActionResult GetCustomerData(CustData model)
    {
        var XMLCustAdd = "<XML><CustAddr></CustAddr></XML>";

        if (model != null)
        {
            XMLCustDtls =   "<XML>" + string.Join("", 
                            "<Customers>" +
                            "<WedAnniv>" + model.WedAnniv.ToString().Trim() + "</WedAnniv>" +
                            "<Locality>" + model.Locality.ToString().Trim() + "</Locality>" +
                            "<HomePhone>" + model.HomePhone.ToString().Trim() + "</HomePhone>" +
                            "<BirthDate>" + model.BirthDate.ToString().Trim() + "</BirthDate>" +
                            "<Town>" + model.Town.ToString().Trim() + "</Town>" +
                            "<Code>" + model.Code.ToString().Trim() + "</Code>" +
                            "<Country>" + model.Country.ToString().Trim() + "</Country>" +
                            "<DtOfCreation>" + model.DtOfCreation.ToString().Trim() + "</DtOfCreation>" +
                            "<Email>" + model.Email.ToString().Trim() + "</Email>" +
                            "<StreetAddr>" + model.StreetAddr.ToString().Trim() + "</StreetAddr>" +
                            "<IsMale>" + model.IsMale.ToString().Trim() + "</IsMale>" +
                            "<MobilePhone>" + model.MobilePhone.ToString().Trim() + "</MobilePhone>" +
                            "<Nm>" + model.Nm.ToString().Trim() + "</Nm>" +
                            "<PostalCd>" + model.PostalCd.ToString().Trim() + "</PostalCd>" +
                            "<State>" + model.State.ToString().Trim() + "</State>" +
                            "<AddressList>" + string.Join("", "<CustAddr>" + model.AddressList.Select(X =>
                                                                                                                             "<Addr1>" + X.Addr1.ToString().Trim() + "</Addr1>" +
                                                                                                                             "<AddressType>" + X.AddressType.ToString().Trim() + "</AddressType>" +
                                                                                                                             "<City>" + X.City.ToString().Trim() + "</City>" +
                                                                                                                             "<MobilePhone>" + X.MobilePhone.ToString().Trim() + "</MobilePhone>" +
                                                                                                                             "<Country>" + X.Country.ToString().Trim() + "</Country>" +
                                                                                                                             "<DateInsert>" + X.DateInsert.ToString().Trim() + "</DateInsert>" +
                                                                                                                             "<Code>" + X.CatCd.ToString().Trim() + "</Code>" +
                                                                                                                             "<Email>" + X.Email.ToString().Trim() + "</Email>" +
                                                                                                                             "<Contact>" + X.Nm.ToString().Trim() + "</Contact>" +
                                                                                                                             "<DefaultAddress>" + X.DefaultAddress.ToString().Trim() + "</DefaultAddress>" +
                                                                                                                             "<Locality>" + X.Locality.ToString().Trim() + "</Locality>" +
                                                                                                                             "<PostalCd>" + X.PostalCd.ToString().Trim() + "</PostalCd>" ) +
                                                              "</CustAddr>"))
                          + "</AddressList>" +
                          "</Customers>"
            + "</XML>";
        }
    }

AND,XML格式如下所示:

<XML>
    <Customers>
       <WedAnniv></WedAnniv>
       <Locality></Locality>
       <HomePhone></HomePhone>
       <BirthDate></BirthDate>
       <City></City>
       <Code></Code>
       <Country></Country>
       <DeviceId></DeviceId>
       <DtOfCreation></DtOfCreation>
       <Email></Email>
       <StreetAddr></StreetAddr>
       <IsActive></IsActive>
       <IsGuestUser></IsGuestUser>
       <IsMale></IsMale>
       <LastSession></LastSession>
       <LoyaltyBalance></LoyaltyBalance>
       <MobilePhone></MobilePhone>
       <Nm></Nm>
       <PostalCd>sample string 15</PostalCd>
       <ProfileImage>sample string 9</ProfileImage>
       <State></State>
   <AddressList>
     <CustAddr>
        <Addr1></Addr1>
        <AddressType></AddressType>
        <City></City>
        <MobilePhone></MobilePhone>
        <Country></Country>
        <DateInsert></DateInsert>
        <Code></Code>
        <Email></Email>
        <Contact></Contact>
        <IsBillingAddress></IsBillingAddress>
        <DefaultAddress></DefaultAddress>
        <Lat></Lat>
        <Locality></Locality>
        <Long></Long>
        <PostalCd></PostalCd>
        <State></State>
      </CustAddr> 
  </AddressList>
 </Customers>
  </XML>

和我的輸出如下:

 <XML>
    <Customers>
         <WedAnniv></WedAnniv> 
         <Locality></Locality> 
        <HomePhone>sample string 16</HomePhone> 
        <BirthDate></BirthDate> 
        <Town></Town> 
        <Code></Code> 
        <Country>sample string 13</Country> 
        <DtOfCreation></DtOfCreation> 
        <Email></Email> 
        <StreetAddr>sample string 9</StreetAddr> 
        <IsMale></IsMale> 
       <MobilePhone>sample string 17</MobilePhone> 
       <Nm></Nm> 
      <PostalCd></PostalCd> 
      <State></State> 
      <AddressList>
   <CustAddr>System.Linq.Enumerable+WhereSelectListIterator`2[System.String]
   </CustAddr> 
   </AddressList>
  </Customers>
</XML>

AddressList包含對象列表,而我最想讀的是上面XML中的數據和傳遞字段。 但是它顯示迭代錯誤消息,並且無法傳遞地址列表中的數據。

嘗試序列化如下代碼

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
using System.IO;

namespace ConsoleApplication72
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(XML));
            XML xml = new XML();
            xml.customers = new CustData();
            xml.customers.addressList = new AddressList();
            xml.customers.addressList.custAddr = new CustAddr();

            StreamWriter writer = new StreamWriter(FILENAME);
            serializer.Serialize(writer, xml);
            writer.Flush();
            writer.Close();
        }
    }
    public class XML
    {
        [XmlElement("Customers")]
        public CustData customers { get; set; }
    }
    [XmlRoot("Customers")]
    public class CustData
    {
        public DateTime WedAnniv { get; set; }
        public string Locality { get; set; }
        public string HomePhone { get; set; }
        public DateTime BirthDate { get; set; }
        public string Town { get; set; }
        public string Code { get; set; }
        public string Country { get; set; }
        public DateTime DtOfCreation { get; set; }
        public string Email { get; set; }
        public string StreetAddr { get; set; }
        public Boolean IsMale { get; set; }
        public string MobilePhone { get; set; }
        public string Nm { get; set; }
        public string PostalCd { get; set; }
        public string State { get; set; }
        [XmlElement("AddressList")]
        public AddressList addressList { get; set; }
    }
    [XmlRoot("AddressList")]
    public class AddressList
    {
        [XmlElement("CustAddr")]
        public CustAddr custAddr { get; set; }
    }
    [XmlRoot("CustAddr")]
    public class CustAddr
    {
        public string Addr1  { get; set; }
        public string AddressType { get; set; }
        public string City  { get; set; }
        public string MobilePhone  { get; set; }
        public string Country  { get; set; }
        public DateTime DateInsert { get; set; }
        public string Code { get; set; }
        public string Email { get; set; }
        public string Contact { get; set; }
        public Boolean IsBillingAddress  { get; set; }
        public string DefaultAddress { get; set; }
        public double Lat { get; set; }
        public string Locality { get; set; }
        public double Long { get; set; }
        public string PostalCd { get; set; }
        public string State { get; set; }
    }

}

檢查此鏈接。 它涵蓋了更多可能的方案。 Linq並非始終都立即執行,並且其中很多是在下一行代碼中的任何一行需要實際輸出時才執行。

http://stackoverflow.com/questions/217805/using-linq-to-concatenate-strings

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM