Linq查询之间的条件查询

时间:2012-09-14 07:10:18

标签: c# linq

我不知道是否可能。 我搜索了一些链接,但没有找到解决方案。

我有一个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查询而不重复代码。

1 个答案:

答案 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变量冲突照片