一个查询方法如下:
public NewsGroupModels GetAll(DateTime nitiji, string category, string meigara)
        {
            var re = new List<NewsModels>();
            var q = from c in T_news
                    join ca in T_master on c.category equals ca.code
                    where ca.code==1
                    join mei in T_master on c.category equals mei.code
                    where mei.code == 2
                    where c.code_date == nitiji && c.category == category && c.kanjiMei == meigara
                    orderby c.code_time descending
                    select new { c, ca.value};            var list = q.ToList();
            NewsModels newsModels = null;
            foreach (var news in list)
            {
                newsModels = new NewsModels();
                newsModels.news = news.c;
                //newsModels.news.category = news.value;
                re.Add(newsModels);
            }            NewsGroupModels models = new NewsGroupModels();
            models.modelsList = re;            models.yesterday = nitiji.AddDays(-1).ToString();
            models.tomorrow = nitiji.AddDays(1).ToString();            models.categoryList = GetMaster(CodeDef.CATEGORY);
            models.meigaraList = GetMaster(CodeDef.MEIGARA);
            return models;
        }
1.如果category或者meigara为空的时候,我就不想加这两个条件,请问下面的where里应该怎么写?where c.code_date == nitiji && c.category == category && c.kanjiMei == meigara
2.
select new { c, ca.value};我现在想写成select new { c, ca.value,mei.value};这样写报错了,请问这个select部分支持别名么?

解决方案 »

  1.   


    var q = from c in T_news
                        join ca in T_master on c.category equals ca.code
                        where ca.code==1
                        join mei in T_master on c.category equals mei.code
                        where mei.code == 2
                        orderby c.code_time descending
                        select new { c, mei, ca.value};
    var list = string.IsNullOrEmpty(category) || string.IsNullOrEmpty(meigara) 
             ? q.ToList()
             : q.Where(r => r.c.code_date == nitiji && r.c.category == category && r.c.kanjiMei == meigara).ToList();