循环中匿名对象的C#匿名数组
我有一个我正在呼叫的web服务,它根据电子邮件、名字和姓氏进行重复检查。我从业务层返回的对象非常大,数据量远远超过我需要返回的数据量。在我的web服务函数中,我只想通过JSON传回10个字段。我没有用这10个字段创建一个新类,而是希望遍历我的大返回对象,并用其中的10个字段创建一个匿名对象列表或数组 我知道我可以像这样手动创建匿名对象的匿名数组循环中匿名对象的C#匿名数组,c#,anonymous-types,C#,Anonymous Types,我有一个我正在呼叫的web服务,它根据电子邮件、名字和姓氏进行重复检查。我从业务层返回的对象非常大,数据量远远超过我需要返回的数据量。在我的web服务函数中,我只想通过JSON传回10个字段。我没有用这10个字段创建一个新类,而是希望遍历我的大返回对象,并用其中的10个字段创建一个匿名对象列表或数组 我知道我可以像这样手动创建匿名对象的匿名数组 obj.DataSource = new[] { new { Text = "Silverlight", Count = 10, Link
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);
}
}
私有类DupeReturn
{
公共字符串名;
公共字符串LastName;
公用串电话;
公共字符串所有者;
公共字符串地址;
公共字符串城市;
公共字符串状态;
公共字符串压缩;
修改公共字符串;
}
[网络方法]
[System.Web.Script.Services.ScriptMethod(ResponseFormat=ResponseFormat.Json)]
公共字符串CheckForDupes(字符串Email、字符串FirstName、字符串LastName)
{
联系人[]列表=Services.contact.GetDupes(电子邮件、名字、姓氏);
if(list!=null&&list.Length>0)
{
重复列表=新列表{};
foreach(列表中的联系人i)
{
DUPERETRUN currentObj=新DUPERETRUN
{
FirstName=i.FirstName,
LastName=i.LastName,
电话,
Owner=i.ownerid.ToString(),
地址=i.address1\u行1,
城市=i.address1_城市,
State=i.address1\u State或provision,
Zip=i.address1\u postalcode,
LastModified=i.ctca_lastactivityon.ToString()
};
添加(当前对象);
}
返回Newtonsoft.Json.JsonConvert.SerializeObject(重复);
}
}
如果不需要的话,我真的不想再上那个额外的私人课了。任何帮助都将不胜感激。使用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()
});
你反对创建另一个类吗?它不是我的应用程序,我只想使用一次性类,因为它只用于这一个函数,而不用于其他任何地方。如果使用Linq,可以使用Take()和Skip()函数进行分页。@LajosArpad-True,虽然我不明白这和这个问题有什么关系。我不认为这和我所问的有什么关系。我想知道如何从循环中创建匿名列表。所以我想创建一个空列表,然后从循环内部向该列表添加对象。