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

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

新規登録して質問してみよう
ただいま回答率
85.50%
C#

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

SQL Server

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

LINQ

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

ASP.NET

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

Q&A

2回答

5212閲覧

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

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

SQL Server

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

LINQ

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

ASP.NET

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

0グッド

0クリップ

投稿2017/05/10 10:05

編集2022/01/12 10:55

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

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

○情報テーブル

物理名データ
IDGuid
MasterIDGuid
Kizyunint
BottanMastersICollection(リレーション)

○ボタンテーブル

物理名データ
BottanMasterIDGuid
NameString
BCodestring
InformationsICollection(リレーション)

InformationService.cs

C#

1 /// <summary> 2 /// 情報を取得 3 /// </summary> 4 /// <param name="MasterId">マスタID</param> 5 /// <returns></returns> 6 public List<Information> GetInformation(Guid MasterId, Guid UserMasterId) 7 { 8 using (var context = GetSampleDbContext()) 9 { 10 using (var rep = new InformationRepository(context)) 11 { 12 //情報を基準度で取得 13 var informations = rep 14 .Where(e => 15 e.MasterId == MasterId 16 .Any()) 17 .Any())) 18 .OrderByDescending(e => e.Kizyun) 19 .ToList(); 20 21 return informations; 22 } 23 } 24 }

②もう一つは公開日と公開終了日を現在の日時と比較して、データを絞り込みたいです。
あと、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です。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/05/10 10:30

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

退会済みユーザー

2017/05/10 10:48

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

回答2

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 03:48

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/05/11 07:21

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

退会済みユーザー

2017/05/11 07:32

> ①は自分も理解できていないので、 是非一度 https://teratail.com/help/question-tips を読んでいただくようお願いします。そこにも書いてありますが、何がわからないかわからない人から質問を受けても、答える側も困ってしまいます。 > ②は試してみたんですが、時間まで出てしまいました。 やり方の問題でしょう。自分の環境では期待した通りの表示になるのは確認済みです。
guest

0

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

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

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

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

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

みたいなので大丈夫かと

投稿2017/05/11 01:40

dojikko

総合スコア3939

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/05/11 07:22

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問