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

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

新規登録して質問してみよう
ただいま回答率
87.20%
Entity Framework

Entity Frameworkは、.NET Framework 3.5より追加されたデータアクセス技術。正式名称は「ADO.NET Entity Framework」です。データベースエンジンに依存しておらず、データプロバイダの変更のみで様々なデータベースに対応できます。

C#

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

受付中

C# Listの要素の処理方法

NewNiche
NewNiche

総合スコア23

Entity Framework

Entity Frameworkは、.NET Framework 3.5より追加されたデータアクセス技術。正式名称は「ADO.NET Entity Framework」です。データベースエンジンに依存しておらず、データプロバイダの変更のみで様々なデータベースに対応できます。

C#

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

1回答

0評価

0クリップ

304閲覧

投稿2022/01/12 14:31

編集2022/01/14 13:25

前提・実現したいこと

https://teratail.com/questions/377011 の続きの質問になります。

以下のようなテーブを考えた際に
テーブルAからシリアル(ここではaaaa)を取得するため、
テーブルBの列;コードを’ー’と’N’で分割したもの と テーブルAの列;年月日を比較して、
合致するテーブルAのデータを取得したいです。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
foreachで4行分回すのではなく、以下の処理を4行分、一気にNewEntityリストに格納することは可能でしょうか。

string[] ymd = List[0].Split(new char[] { '-', 'N' });

var NewEntity =context.テーブルA.AsEnumerable().Where(x => x.Year.Tostring() == ymd[0] && x.Month x.Year.Tostring() == ymd[1] && x.Day x.Year.Tostring() == ymd[2]) .ToList();
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

テーブルA

シリアル
11124aaaa
22175baaa
11124aabb
22175bbbb

テーブルB

コード
11-12N4←テーブルAの1行目と合致
10-3N4
13-12N4
14-3N4

該当のソースコード

C#

//リストにテーブルBのコードを入れる var List = new List<string>(); テーブルBエンティティ.ForEach(x => { List.Add(x.Code); }); //Listのcodeを三分割して、テーブルAの年月日と比較する処理 string[] ymd = List[0].Split(new char[] { '-', 'N' }); var NewEntity = context.テーブルA.AsEnumerable() .Where(x => x.Year.Tostring() == ymd[0] && x.Month x.Year.Tostring() == ymd[1] && x.Day x.Year.Tostring() == ymd[2]) .ToList();

補足情報(FW/ツールのバージョンなど)

C#
.NET
Entity Framework
SQLServer
VisualStudio2017

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

NewNiche
NewNiche

2022/01/13 02:26

対応遅れてしまい、申し訳ございません。。
SurferOnWww
SurferOnWww

2022/01/13 03:36 編集

> foreachで4行分回すのではなく、以下の処理を4行分、一気にNewEntityリストに格納することは可能でしょうか。 意味が分かりません。その結果 NewEntity はどうなればいいのですか? それに、foreach を使えば質問者さんが自己解決できるなら、foreach を使えば良いと思いますけど、何故そうしないのですか?
NewNiche
NewNiche

2022/01/13 23:38 編集

for (int i = 0; i < List.Count(); i++) { string[] ymd = List[i].Split(new char[] { '-', 'N' }); var NewEntity = context.テーブルA.AsEnumerable().Where(x => x.Year.Tostring() == ymd[0] && x.Month Tostring() == ymd[1] && x.Day .Tostring() == ymd[2]); } 以上のようなコードを考えたのですが、NewEntityに四列分の処理が入ってこず、NULLになってしまうので、for/foreachを使わない方法を考えておりました。
SurferOnWww
SurferOnWww

2022/01/13 06:01

先のコメントの質問「その結果 NewEntity はどうなればいいのですか?」に答えてください。 > NULLになってしまうので、 先のスレッドは解決したそうですが、であればその時は null にはならなかったのでは? そこも意味不明です。変数のスコープという基本的なことは理解してますか?
NewNiche
NewNiche

2022/01/13 23:48 編集

理解が足りておらず、すみません. 前スレっとでは、そこまでは確認しておりませんでした。スコープは理解しているつもりです。。 NewEntityは、結果的にCount=4を格納したいです。
SurferOnWww
SurferOnWww

2022/01/14 01:39

話が通じてますか?  > 前スレっとでは、そこまでは確認しておりませんでした。 前のスレッドと言うのは、ここのコメント欄の一番最初に私が書いた https://teratail.com/questions/377606 のことだけど、そのスレッドの私の回答のコメント欄に、質問者さんが > 一時変数を使う方法、AsEnumerableを使う方法、ともに実行できました。 と書いたけど、どういうこと? > スコープは理解しているつもりです。。 いや、理解してたら上の質問者さんの 2022/01/14 08:38 のコメントのようなコードは書かないはず。ホントに分かっているならそういうコードは書かないこと。 > NewEntityは、結果的にCount=4を格納したいです。 私の質問「その結果 NewEntity はどうなればいいのですか?」の答えになってないです。何が 4 つ NewEntity に入っていればいいの?

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Entity Framework

Entity Frameworkは、.NET Framework 3.5より追加されたデータアクセス技術。正式名称は「ADO.NET Entity Framework」です。データベースエンジンに依存しておらず、データプロバイダの変更のみで様々なデータベースに対応できます。

C#

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