0

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

我有一个 linq 查询,用于从数据库中获取一些数据。现在,在我的数据库中的表格列照片中可以有或不能有图像。这意味着 Photo 也可以为空。

所以我的问题是: 有没有一种方法,而不是在 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 查询一起使用。

4

1 回答 1

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 更改为 Photos,因为它与外部 Photo 变量和内部匿名类型变量 Photo 冲突

于 2012-09-14T07:20:32.273 回答