如何将SQL查询转换为Lambda?

时间:2019-07-11 08:10:53

标签: c# sql asp.net asp.net-mvc

我有以下SQL查询返回我需要的结果:

mysqldump -h ${HOST} -u ${USER} -p${PASSWORD} $1"temp" | gzip > $2

我有以下控制器方法尝试返回正确的结果:

mysql -e "DROP DATABASE IF EXISTS $1anom" -h ${HOST} -u ${USER} -p${PASSWORD} $1"temp"

但是,我在Lambda表达式上苦苦挣扎,它没有返回任何结果,因此我错过了某些地方。

2 个答案:

答案 0 :(得分:1)

您可以尝试以下操作:

 public JsonResult GetStaffResults(DateTime date, string modelId)
        {
            Guid modelGuid = Guid.Parse(modelId);
            var settings = new JsonSerializerSettings();

            var staffQuery = context.StaffTable
                .Where(s => !context
                    .StaffingTable
                    .Any(st => st.StaffId = s.StaffId && st.modelId == modelGuid && st.date == date))
                .Select(c => new
                {
                    Id = c.StaffId,
                    Name = c.StaffName
                });

            return Json(staffQuery.ToList(), settings);
        }

答案 1 :(得分:0)

您正在使用Select进行单独的查询,这存在性能问题,因为查询将返回IEnumerable<T>对象。如果您要使用单独的查询,请尝试以IQueryable<T>的形式获取查询结果,这将构成查询并最终加载数据。

例如:

var query =    
    from st in context.StaffTable  
    where !(from stff in context.StaffingTable  
            select stff.CustomerID)
            where stff.MODEL_ID = ModelIdVariable AND stff.DATE = DATEVariable
           .Contains(st.CustomerID)    
    select st;

在查询之前声明并填充ModelIdVariableDATEVariable变量。

然后您可以在需要加载数据的地方进行query.ToList<T>()