使用linq查询实体的id

时间:2013-05-14 07:30:39

标签: c# .net linq querying

在下面的方法中,我试图通过传递id值来获取用户名,其中传递的id作为参数可以是csv中的多个值(例如:1,2),并作为IEnumerable返回到调用函数。 / p>

代码如下:

[NonAction]
public static IEnumerable<UserProfile> SearchCMSAdmins(string s)
{
    //var searchResults = Entities.UserProfiles.Where(item =>item.UserName.Contains(s));
    //return searchResults;

    string[] ids = s.Split(',');

    IEnumerable<UserProfile> results = null;
    IList<UserProfile> user = new List<UserProfile>();

    for (int i = 0; i < ids.Length; i++)
    {
        int id = Convert.ToInt32(ids[i].ToString());
        var entity = Entities.UserProfiles.Where(item => item.UserId);
        //user.Add(entity);
        results = results.Concat(entity);
    }

    return results;
}

感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

尝试使用Contains

var results = Entities.UserProfiles.Where(item => ids.Contains(item.UserId));

http://msdn.microsoft.com/en-us/library/ms132407.aspx

答案 1 :(得分:0)

您可以将id数组设为int类型,您可以使用int.TryParseConvert.ToInt32类似:

int[] ids = s.Split(',').Select(r=> Convert.ToInt32(r)).ToArray();

稍后您可以将LINQ查询修改为:

IList<UserProfile> user = Entities.UserProfiles
                                  .Where(item=> ids.Contains(item)).ToList();

这就像Select * from table where ID in (1,2,3)Creating IN Queries With Linq to SQL的想法

答案 2 :(得分:0)

[NonAction]
public static IEnumerable<UserProfile> SearchCMSAdmins(string s)
{
    string[] ids = s.Split(',');

    foreach (string idAsString in ids)
    {
        int id = Convert.ToInt32(idAsString);
        var entity = Entities.UserProfiles.Where(item => item.UserId == id);
        yield return entity;
    }
}

应该这样做(如果id不是int或者实体为null,也应该有一些验证码)