0

それが可能かどうかはわかりません。私はいくつかのリンクを検索しましたが、解決策が見つかりませんでした。

データベースからデータを取得するためのlinqクエリがあります。これで、テーブル列のデータベースで、写真に画像を含めることができる場合とできない場合があります。これは、写真も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;
    }

私は自分のコードですでに多くのifelseを使用しているので、ifelseを使用したくありません。コードを繰り返さずにこれを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に変更しました.cozは、内側の匿名型変数Photoを持つ外側のPhoto変数と競合します

于 2012-09-14T07:20:32.273 に答える