DataTable dt = GetData(txtZip.Text);
List<Entity> objlist = new List<Entity>();
for (int i = 0; i < dt.Rows.Count; i++)
{
Entity obj = new Entity();
obj.Zipcode = Convert.ToInt32(dt.Rows[i].ItemArray[0]);
obj.FacilityName = dt.Rows[i].ItemArray[1].ToString();
obj.Latitude = Convert.ToDouble(dt.Rows[i].ItemArray[2]);
obj.Longitude = Convert.ToDouble(dt.Rows[i].ItemArray[3]);
objlist.Add(obj);
}
var result = objlist.GroupBy(member => member.Zipcode)
.Select(group => new
{
Zipcode = group.Key,
Latitude = ,
Longitude = ,
FacilityName = string.Join(",", group.Select(m => m.FacilityName))
}).ToList();
我想将结果添加到List,就像这样objList.Add(result)
在此之前,我添加到列表中的内容将覆盖此语句
以及如何获得纬度和经度
答案 0 :(得分:-1)
显然我最初误解或误解了这个问题。
我想将结果添加到List,就像这个objList.Add(结果)一样,在此之前我添加到列表中的内容将覆盖此语句以及如何获取纬度和经度
要将多个项目添加到现有列表而不覆盖其中的内容,请使用
objlist.AddRange(_someIEnumerableOfT_)
实例方法。
以及如何获得纬度和经度
由于您已按邮政编码对实体进行分组,因此每个邮政编码很可能会有多个实体。您的select语句对每个组进行操作 - 一个键,以及共享该键的IEnumerable项。目前还不清楚您希望使用哪些值,但假设平均值足以供您使用,则以下代码可以满足您的需求。
objlist = objlist.GroupBy(member => member.Zipcode)
.Select(group => new Entity
{
Zipcode = group.Key,
Latitude = group.Average(m => m.Latitude),
Longitude = group.Average(m => m.Longitude),
FacilityName = string.Join(",", group.Select(m => m.FacilityName))
}).ToList();