質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.45%

  • C#

    9283questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • SQL Server

    745questions

    SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

  • ASP.NET

    634questions

    ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

  • LINQ

    136questions

    LINQとはLanguage INtegrated Queryの略で、「統合言語クエリ」という意味です。C#やVisual Basicといった言語のコード内に記述することができるクエリです。

DBから値を取得する方法と公開日時の範囲を指定する方法

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,609
退会済みユーザー

退会済みユーザー

サンプルとしてソースを読んでいて、どうやっていいのか分らないので
教えて下さい。ほぼ何もわからないので質問もおかしいかもしれませんが、
おねがいします。

①DBからLinqでボタンテーブルのNameを取得したいのですが、分りません。
SQL文はselectとWhereならなんとなくわかる程度です。
※ソースとテーブルは長いので必要そうだと思った所を載せてます。

○情報テーブル                   

物理名 データ
ID Guid
MasterID Guid
Kizyun int
BottanMasters ICollection(リレーション)

○ボタンテーブル

物理名 データ
BottanMasterID Guid
Name String
BCode string
Informations ICollection(リレーション)

InformationService.cs

        /// <summary>
        /// 情報を取得
        /// </summary>
        /// <param name="MasterId">マスタID</param>
        /// <returns></returns>
        public List<Information> GetInformation(Guid MasterId, Guid UserMasterId)
        {
            using (var context = GetSampleDbContext())
            {
                using (var rep = new InformationRepository(context))
                {
                    //情報を基準度で取得
                    var informations = rep
                        .Where(e =>
                            e.MasterId == MasterId
                            .Any())
                            .Any()))
                        .OrderByDescending(e => e.Kizyun)
                        .ToList();

                    return informations;
                }
            }
        }

②もう一つは公開日と公開終了日を現在の日時と比較して、データを絞り込みたいです。
あと、viewで表示した時になぜか[yy-mm-dd-hh:mm]と表示されてしまうので
[yy-mm-dd]にしたいです。

上記の情報テーブルから公開日と終了公開日は取得出来ているので、
現在の日時を取得して公開日~終了日がそれに該当しない場合は、除外
したいですが、どうすればいいのでしょうか?
私の勝手な考えではDateTime.Now;で日付を持ってきて比較する感じかなと・・・。

あと1つは、InformationService.csで取得した公開日をcontlloerでreturn View(model);でViewに送り、Viewで@m.Koukaibiで表示しているのですが、[yy-mm-dd]で表示するにはどうすればいいのでしょうか。

Model
/// <summary>
/// Koukaibi
/// </summary>
public override DateTime Koukaibi { get; set; }

追記
作っている部分は、お知らせ一覧を表示するという
ものです。ただ、ログインした人によって表示する項目を変えたり、お知らせが誰からのものか分かるようにしたいなと考えています。
開発環境は、windows、Visual Studio2015、 SQL Server2014 .NET mvc5、IIS Express、ブラウザはgoogleです。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • SurferOnWww

    2017/05/10 19:30

    何を作っているのか(controller という言葉が出てくるので MVC と想像してますが、であればそのバージョン)と自分の開発環境(開発マシンの OS、Visual Studio, SQL Server のバージョン・エディション、.NET のバージョン、ローカル IIS or IIS Express どちらを使っているか、ブラウザは何かなど)ぐらいは書けませんか?

    キャンセル

  • この投稿は削除されました

  • 退会済みユーザー

    退会済みユーザー

    2017/05/10 19:48

    すみません。ご指摘、ありがとうございます。追記しました。

    キャンセル

回答 2

0

[yy-mm-dd]にしたいです

単に表示だけの問題ならValueConverterで済ませてしまう

現在の日時を取得して公開日~終了日がそれに該当しない場合は、除外したい

今書いているLINQにWhereをメソッドチェーンで必要な条件
・公開日が今日より前
・終了日が今日より後
を追加で書いてあげればよいのでは?
今回はAND条件なので

rep.Where(ほにゃらら).Where(ほにゃらら).Where(ほにゃらら).ToList()

みたいなので大丈夫かと

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/11 16:22

    現在の時間を取得して、Whereを書いたら出来ました。
    ありがとうございます。

    キャンセル

0

ほぼ何もわからないので

と言うことですと、なかなか話が通じにくく、ここのような掲示板では十分な説明はできないので、説明しても理解してもらえない可能性が大ですが、一応説明します。

①DBからLinqでボタンテーブルのNameを取得したいのですが、分りません。

何をしたいのかよくわからないのですが、想像を膨らませると・・・

「情報テーブル」のレコードと「ボタンテーブル」のレコードが外部キーで関連付けられていて、「情報テーブル」を MasterID で検索してヒットしたレコードで「ボタンテーブル」のレコードと関連付けられている Name フィールドの値を取得したいということのような気がします。

そうであれば、ナビゲーションプロパティが定義されているはずなので、それから取得できると思います。

上記の想像がハズレでしたら、「ボタンテーブルのName」をどういう条件で取得したいのか、ここに書いてあること以外は何も知りえない第三者が分かるように書いてください。

それから、controller と Entity Data Model (EDM) の間にリポジトリクラスを入れているようですが、それだとリポジトリクラスのコードが分からないと、rep の正体が不明なのではっきりしたことは言えません。必要最低限のコードを記載するようにしてください。 

(Visual Studio のスキャフォールディング機能を利用して作った EDM に直接アクセスするような controller ならおおよその想像は付くのですが)

②もう一つは公開日と公開終了日を現在の日時と比較して、データを絞り込みたいです。

「公開日と公開終了日」というのがテーブルにあれば where 句を使って可能だと思います。

viewで表示した時になぜか[yy-mm-dd-hh:mm]と表示されてしまうので [yy-mm-dd]にしたいです。

Model の当該プロパティに DisplayFormatAttribute を付与してみてください。以下のような感じです。

 [DisplayFormat(DataFormatString = "{0:yy-MM-dd}", ApplyFormatInEditMode = true)]

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/11 16:21

    ①は自分も理解できていないので、もう少し勉強して改めて質問しますね。ありがとうございます。
    ②は試してみたんですが、時間まで出てしまいました。

    キャンセル

  • 2017/05/11 16:32

    > ①は自分も理解できていないので、

    是非一度 https://teratail.com/help/question-tips を読んでいただくようお願いします。そこにも書いてありますが、何がわからないかわからない人から質問を受けても、答える側も困ってしまいます。

    > ②は試してみたんですが、時間まで出てしまいました。

    やり方の問題でしょう。自分の環境では期待した通りの表示になるのは確認済みです。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.45%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • C#

    9283questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • SQL Server

    745questions

    SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

  • ASP.NET

    634questions

    ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

  • LINQ

    136questions

    LINQとはLanguage INtegrated Queryの略で、「統合言語クエリ」という意味です。C#やVisual Basicといった言語のコード内に記述することができるクエリです。