Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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
Mysql 使用LINQ构建动态查询_Mysql_Asp.net Mvc_Linq_Asp.net Mvc 4 - Fatal编程技术网

Mysql 使用LINQ构建动态查询

Mysql 使用LINQ构建动态查询,mysql,asp.net-mvc,linq,asp.net-mvc-4,Mysql,Asp.net Mvc,Linq,Asp.net Mvc 4,我是php/mysql进入asp.net的。我正在构建页面标题中的主卡片搜索表单。有一个文本输入、多个下拉列表(都指向不同的列)和一些条件搜索选项 对于mysql版本,我能够使用条件构建包含查询的sting,然后执行它 //MySql/PHP example $query = "SELECT * FROM cards WHERE "; //Encounter_set if (isset($_GET['Encounter_Set']){ $query.= "Encounte

我是php/mysql进入asp.net的。我正在构建页面标题中的主卡片搜索表单。有一个文本输入、多个下拉列表(都指向不同的列)和一些条件搜索选项

对于mysql版本,我能够使用条件构建包含查询的sting,然后执行它

 //MySql/PHP example
 $query = "SELECT * FROM cards WHERE ";

    //Encounter_set 
if (isset($_GET['Encounter_Set']){
    $query.= "Encounter_Set=:Encounter_Set AND ";
    $queryArray['Encounter_Set'] = $_GET['Encounter_Set'];
}

 //radio statements
switch ($_GET['radio']) {
    case "All":     $query.= "(Title LIKE :terms OR Traits LIKE :terms OR Shadow_Text LIKE :terms OR Text LIKE :terms)";break;
    case "Title":   $query.= "(Title LIKE :terms)";break;
    case "Traits":  $query.= "(Traits LIKE :terms)";break;
    case "Text":    $query.= "(Shadow_Text LIKE :terms OR Text LIKE :terms)"; break;
    default:        $query.= "(Title LIKE :terms OR Traits LIKE :terms OR Shadow_Text LIKE :terms OR Text LIKE :terms)";
}

 //Finally
 $result = $db_con->prepare($query);
我如何在LINQ中实现这一点?

使用(var context=new MyDbContext())
using (var context = new MyDbContext())
{
    IQueryable<Card> query = context.Cards;
    if (!string.IsNullOrEmpty(Encounter_Set))
    {
        query = query.Where(c => c.Encounter_Set == Encounter_Set);
    }
    switch (radio)
    {
        default:
        case "All":
            query = query.Where(c => c.Title.Contains(terms)
                || c.Traits.Contains(terms)
                || c.Shadow_Text.Contains(terms)
                || c.Text.Contains(terms));
            break;
        case "Title":
            query = query.Where(c => c.Title.Contains(terms));
            break;
        case "Traits":
            query = query.Where(c => c.Traits.Contains(terms));
            break;
        case "Text":
            query = query.Where(c => c.Shadow_Text.Contains(terms)
                || c.Text.Contains(terms));
            break;
    }
    // ...
    return query.ToList(); // Execute the query
}
{ IQueryable query=context.Cards; 如果(!string.IsNullOrEmpty(遇到集合)) { query=query.Where(c=>c.conference\u Set==conference\u Set); } 开关(收音机) { 违约: 案例“全部”: query=query.Where(c=>c.Title.Contains)(术语) ||c.特征。包含(术语) ||c.Shadow_Text.Contains(术语) ||c.文本包含(术语)); 打破 案例“标题”: query=query.Where(c=>c.Title.Contains(terms)); 打破 案例“特征”: query=query.Where(c=>c.Traits.Contains(terms)); 打破 案例“文本”: query=query.Where(c=>c.Shadow\u Text.Contains(terms) ||c.文本包含(术语)); 打破 } // ... return query.ToList();//执行查询 }
LINQ允许您编写查询。这个初始语句:
var logs=from log in context.logs选择log是否将从表中获取所有行?从表中提取每一行开始似乎效率很低。不,linq是懒惰的,它不会执行查询,直到您实际尝试枚举这些值为止