2016-03-28 66 views
2

我有一个Conversation类,它对应于数据库中的多个表。 对话有一个Users的列表作为字段。我想返回基于Users域是否包含参数LINQ查询返回列表,基于数据库字段的属性

我不确定如何做到这一点的会话列表...

我知道这个代码不工作,甚至不能编译,但它应该给的什么,我试图做一个想法:

public IHttpActionResult GetConversationForUser(String email) 
{ 

    IQueryable<Conversation> users = from d in db.Conversations 
            where d.Users == email; // I wish to something like **d.Users.Email == email** here but I am unsure how to express this correctly 

    if(users == null) 
    { 
     return NotFound(); 
    } 

    return Ok(); 
} 

回答

3

使用Any扩展方法:

IQueryable<Conversation> users = from d in db.Conversations 
            where d.Users.Any(u=>u.Email== email) 
            select d; 
1

像这样的东西应该活像k:

public IHttpActionResult GetConversationForUser(String email) 
{ 

    IQueryable<Conversation> users = from d in db.Conversations 
            where d.Users.Any(u=>u.Email == email) 
            select d; 

    //Check if the query returns something not if the query is null, which won't happen 
    if(!users.Any()) 
    { 
     return NotFound(); 
    } 

    return Ok(); 
} 
0

我不确定我是否理解正确的问题。如果我得到正确的,你可以写

var users = db.Conversations.Where(r => r.Email!= null || !r.Email.Equals(string.Empty))