我正在编写WP 8应用程序,我需要通过WCF服务返回用户列表。
我在数据库中有两个表:Users
(包含位置和其他用户的数据)和Tabs
(包含两个字段u1ID
(我的ID)和u2ID
(用户我可以在地图上看到。。因此,我得到所有u2ID
并将它们与Id
表的Users
字段进行比较。如果它们相似 - 我将此用户添加到列表中。
但是getAllusrs
方法只返回数据库中的第一条记录。我该如何纠正?
我的服务实施:
public List<Point> getAllusrs()
{
DataClasses1DataContext data = new DataClasses1DataContext();
var a = (from s in data.Tabs where s.u1ID == 1 select s.u2ID).ToArray();
int inc = 0;
List<Point> location = new List<Point>();
foreach (var d in data.Users)
{
if (a[inc] != null && d.Id == a[inc])
{
location.Add(new Point() { Lat = d.usrLat, Lon = d.usrLong });
inc++;
}
}
return location;
}
答案 0 :(得分:1)
您需要处理基本循环。
public List<Point> GetAllUsers()
{
var data = new DataClasses1DataContext();
var userIds = data.Tabs.Where(t => t.u1ID == 1).Select(t => t.u2ID).ToList();
var users = data.Users.Where(u => userIds.Contains(u.Id)).ToList();
var locations = users.Select(u => new Point { Lat = u.usrLat, Lon = u.usrLong }).ToList();
return locations;
}
你应该在数据库上做所有这些事情,而不是像我一样在它之间实现它。