2011-03-14 98 views
1

我有一个表用户。用户有专栏评分。我如何可以使用linq2sql获取有关用户位置的信息?我想要的方法是:我怎样才能使用linq2sql ...?

var userPlace = GetUserPlaceById(userId);

表用户可能包含几千个用户。


对不起大家。用户DOESNT包含地点栏。真实的例子:评级是国际象棋评级。如果你有很高的评价,那么你在第一名。如果你有更低的评分,那么你在最后一个地方。

+0

的问题不清楚。这个地方如何存储?一列?参考?你为什么提到'评分'? – 2011-03-14 21:11:10

回答

3

你的意思是这样?

int userRating = users.Single(user => user.Id = userId).Rating; 
int userPlace = users.Where(user => user.Rating < userRating).Count() + 1; 
+0

谢谢。我的意思是这个。 – Neir0 2011-03-14 21:22:27

1

我有一个表用户。用户有专栏评分。我如何可以使用linq2sql获取有关用户位置的信息?

我不知道什么是“userPlace”是的,但假设它是在表中的列...

var userPlace = (from user in db.Users 
       where user.Id == userId 
       select user) 
       .First() 
       .UserPlace; 

注意调用。首先()将抛出一个异常,如果没有匹配被找到,所以如果你期望有时这个用户不存在使用FirstOrDefault,检查null,然后抓取UserPlace属性。

+0

我编辑过的问题。用户不包含地点栏。 – Neir0 2011-03-14 21:18:02

0

你会使用这样的:

string GetUserPlaceById(int userId) 
{ 
    IQueryable<User> users = GetUsers(); // Get users queryable reference 

    return users.Single(user => user.Id == userId).Place; 
} 
+0

我编辑的问题。用户不包含地点栏。 – Neir0 2011-03-14 21:17:21

0

你可以做这样的事情:

var userPlace = _db.Users.Where(x => x.UserId == userId).Select(x => x.Place).SingleOrDefault();