Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LINQ动态查询_Linq_Dynamic - Fatal编程技术网

LINQ动态查询

LINQ动态查询,linq,dynamic,Linq,Dynamic,如何动态生成LINQ查询: int[] IDArray = {55, 36}; public IQueryable<ContactListView> FindAllContacts(int loggedUserID, int[] IDArray) { var result = ( from contact in db.Contacts //Start of dynamic part...

如何动态生成LINQ查询:

int[] IDArray = {55, 36};

public IQueryable<ContactListView> FindAllContacts(int loggedUserID, int[] IDArray)
{
    var result = (
                 from contact in db.Contacts

                 //Start of dynamic part...
                 where 
                 contact.UserID == loggedUserID
                 foreach (var id in IDArray)
                 {
                     where contact.UserID == id 
                 }
                 // End of dynamic part

                 orderby contact.ContactID descending                         
                 select new ContactListView
                 {
                     ContactID = contact.ContactID,
                     FirstName = contact.FirstName,
                     LastName = contact.LastName                            
                 });

    return result;
}
谢谢, Ile

你不能直接使用Contains吗?我假设您想要生成一个包含IN子句的查询。这里有一个例子:

你就不能用它吗?我假设您想要生成一个包含IN子句的查询。这里有一个例子:

您可能需要IDArray.Containscontact.UserID的位置

您可能需要IDArray.Containscontact.UserID的位置

&&IDArray.Contains id-此范围内不存在该id?你能说得更准确些吗?ThanksIDArray.Contains id应为IDArray.Contains contact.UserID&&IDArray.Contains id-此范围中不存在该id?你能说得更准确些吗?ThanksIDArray.Contains id应为IDArray.Contains contact.UserID
int[] IDArray = {55, 36};

public IQueryable<ContactListView> FindAllContacts(int loggedUserID, int[] IDArray)
{
    var result = (
                 from contact in db.Contacts
                 where contact.UserID == loggedUserID
                     && IDArray.Contains( contact.UserID )
                 orderby contact.ContactID descending                         
                 select new ContactListView
                 {
                     ContactID = contact.ContactID,
                     FirstName = contact.FirstName,
                     LastName = contact.LastName                            
                 });

    return result;
}