我不知道是否可能。 我搜索了一些链接,但没有找到解决方案。
我有一个linq查询从数据库中获取一些数据。 现在,在我的数据库表格列中,照片可以拥有或不具有图像。 这意味着Photo也可以为null。
所以我的问题是: 是否有一种方法而不是在linq查询中使用if else条件,我们可以像这样使用我的代码:
DataTable Customer=ds.Tables["Customer"]
if (Photo==null)
{
var items = (from d in Customer.AsEnumerable()
where d.Field<string>("strHin") != string.Empty
orderby d.Field<DateTime>("date")
select new News
{
NewsItemId = d.Field<Int32>("intCustId").ToString(),
HeadLine = d.Field<string>("strHin"),
Photo = null,
}).Take(Convert.ToInt32(limit)).ToList();
return items;
}
if(Photo !=null)
{
var items = (from d in Customer.AsEnumerable()
where d.Field<string>("strHin") != string.Empty
orderby d.Field<DateTime>("date")
select new News
{
NewsItemId = d.Field<Int32>("intCustId").ToString(),
HeadLine = d.Field<string>("strHin"),
Photo = @"http://192.168.1.12:801/ImageById/" + d.Field<Int32>("intCustId") + ".jpg"
}).Take(Convert.ToInt32(limit)).ToList();
return items;
}
我不想使用if else因为我已经在我的代码中使用了很多if else。 有没有一种方法可以使用linq查询而不重复代码。
答案 0 :(得分:1)
var result= (from d in Customer.AsEnumerable()
where d.Field<string>("strHin") != string.Empty
orderby d.Field<DateTime>("date")
select new News
{
NewsItemId = d.Field<Int32>("intCustId").ToString(),
HeadLine = d.Field<string>("strHin"),
Photos = Photo==null?"":@"http://192.168.1.12:801/ImageById/" + d.Field<Int32>("intCustId") + ".jpg",
}).Take(Convert.ToInt32(limit)).ToList();
return items;
注意:我已将照片中的匿名变量名称更改为照片,因为它与内部匿名类型变量外部Photo变量冲突照片