LinqToSql ...查询没有数据

时间:2014-01-02 09:24:05

标签: c# .net linq-to-sql

我使用Linq构建此查询,如下所示

var query15 = (from g in dc.Fix_Hotel_TTVs
               from f in dc.Hotel_Meals_TBLs
               where g.CityCode == "KEP" && g.MarketID == "IT" && g.Category == "DEL" && g.HotelCodeID == f.HotelCodeID
               select new { Code3 = f.WholeCode == ""? "No Data" : f.WholeCode, Hotel3 = f.HotelName == "" ? "No Data" : f.HotelName }).DefaultIfEmpty();

我希望在DataGrid中显示,以防查询结果在 Code3 Hotel3 字符串=“无数据”字段中为空,但我不能找出解决方案来获得这个结果,然后你知道如何解决这个问题吗?

谢谢, 杰

3 个答案:

答案 0 :(得分:4)

我认为在SQL查询中硬编码UI常量并不是一个好主意。只需在UI中处理该案例即可。即您应该在数据访问层中进行查询:

var query =  from g in dc.Fix_Hotel_TTVs
             join f in dc.Hotel_Meals_TBLs // you can use join
                  on g.HotelCodeID equals f.HotelCodeID
             where g.CityCode == "KEP" && 
                   g.MarketID == "IT" && 
                   g.Category == "DEL"
             select new FooViewModel { // Consider to create class for this data
                 Code3 = f.WholeCode,
                 Hotel3 = f.HotelName
             };

然后将从数据访问层返回的数据绑定到DataGrid。还提供带有No Data文本的默认行,如以下问题所述:

答案 1 :(得分:1)

您应该为DefaultIfEmpty方法提供默认值:

public class HotelGridViewModel
{
    public string Code3{get;set;}
    public string Hotel3{get;set;}
}

var query15 = (from g in dc.Fix_Hotel_TTVs
           from f in dc.Hotel_Meals_TBLs
           where g.CityCode == "KEP" && g.MarketID == "IT" && g.Category == "DEL" && g.HotelCodeID == f.HotelCodeID
           select new HotelGridViewModel() { Code3 = f.WholeCode, Hotel3 = f.HotelName 
           ).DefaultIfEmpty(new HotelGridViewModel(){ Code3 = "No  Data", Hotel3 = "No Data"});

答案 2 :(得分:1)

我认为一个简单的解决方案...... 例如,我有两个字段名称和家庭: 我的疑问是:

var query=(from p in behzad.main_table
select p).toArray();

并简单解码您的查询,例如

for(int i=0;i<query.count();i++){
if (query[i].name=="Empty or Null")`
dt[i]["name"]="your message for show in gridview"

当你完成时 简单地将数据填充到gridview中,例如

gridview.datasource(dt);

TNX