我使用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 字符串=“无数据”字段中为空,但我不能找出解决方案来获得这个结果,然后你知道如何解决这个问题吗?
谢谢, 杰
答案 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