2012-04-18 5 views
2

私は電子メール、firstNameとlastNameに基づいて括りチェックを行います。私がビジネスレイヤーから戻ってくるオブジェクトは非常に大きく、私が戻す必要があるよりも多くのデータを持っています。私のWebサービス機能では、JSON経由で10個のフィールドを返すだけです。これらの10個のフィールドで新しいクラスを作成するのではなく、大きな戻りオブジェクトをループし、その中の10個のフィールドを持つ匿名オブジェクトのリストまたは配列を作成するだけです。C#匿名オブジェクトの配列からのループ

私の問題は、私は私の大きなオブジェクトをループしてのみ、私はフィールドを引き抜くことにより除き、その正確な事をしたいということです手動でこの

ように私は、私は匿名オブジェクトの匿名配列を作ることができます知っている

obj.DataSource = new[] 
{ 
    new { Text = "Silverlight", Count = 10, Link = "/Tags/Silverlight" }, 
    new { Text = "IIS 7",  Count = 11, Link = "http://iis.net"  }, 
    new { Text = "IE 8",   Count = 12, Link = "/Tags/IE8"   }, 
    new { Text = "C#",   Count = 13, Link = "/Tags/C#"   }, 
    new { Text = "Azure",  Count = 13, Link = "?Tag=Azure"   } 
}; 

戻る必要があります。

private class DupeReturn 
{ 
    public string FirstName; 
    public string LastName; 
    public string Phone; 
    public string Owner; 
    public string Address; 
    public string City; 
    public string State; 
    public string Zip; 
    public string LastModified; 
} 

[WebMethod] 
[System.Web.Script.Services.ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public string CheckForDupes(string Email, string FirstName, string LastName) 
{ 
    contact[] list = Services.Contact.GetDupes(Email, FirstName, LastName); 
    if (list != null && list.Length > 0) 
    { 
     List<DupeReturn> dupes = new List<DupeReturn> { }; 
     foreach (contact i in list) 
     { 
      DupeReturn currentObj = new DupeReturn 
      { 
       FirstName = i.firstname, 
       LastName = i.lastname, 
       Phone = i.telephone1, 
       Owner = i.ownerid.ToString(), 
       Address = i.address1_line1, 
       City = i.address1_city, 
       State = i.address1_stateorprovince, 
       Zip = i.address1_postalcode, 
       LastModified = i.ctca_lastactivityon.ToString() 
      }; 
      dupes.Add(currentObj); 
     } 
     return Newtonsoft.Json.JsonConvert.SerializeObject(dupes);  
    } 
} 

私は本当に必要ない場合は、追加のプライベートクラスを作る必要はありません。どんな助けもありがとう。

+1

あなたは別のクラスを作ることに対して何を得ましたか? – AakashM

+0

これは私のアプリケーションではなく、使い捨てクラスを使用したかったのは、この1つの関数でのみ使用されていて、他の場所では使用されていなかったからです。 – vipergtsrz

答えて

6

LINQを使用すると、匿名の種類の一覧を作成できます。

var dupes = list.Select(i => new { FirstName = i.firstname, 
            LastName = i.lastname, 
            Phone = i.telephone1, 
            Owner = i.ownerid.ToString(), 
            Address = i.address1_line1, 
            City = i.address1_city, 
            State = i.address1_stateorprovince, 
            Zip = i.address1_postalcode, 
            LastModified = i.ctca_lastactivityon.ToString() 
            }); 
+0

Linqを使用する場合は、ページングにTake()およびSkip()関数を使用できます。 –

+2

@ LajosArpad - 真実ですが、私はその問題と何が関係しているのか分かりません。 – Oded

+0

私はこれが私が求めていることはしないと思います。ループの中から匿名リストを作る方法を知りたいだから、私は空のリストを作成して、ループ内からそのリストにオブジェクトを追加したいと思います。 – vipergtsrz

関連する問題