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

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

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

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

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

ASP.NET

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

Q&A

解決済

1回答

10403閲覧

C#でforeachの中にifを入れて分岐させたい

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

ASP.NET

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

0グッド

0クリップ

投稿2017/03/01 07:46

編集2017/03/01 09:24

ASP.NET MVC5で環境はVisual Stadio2015です。
言語はC#でwebアプリケーションを作成しています。
webApiを使い外部のソフトと連動?させています。

以前に私が質問したものに追加でわからない部分なんですが、
よろしくお願いします。
質問:https://teratail.com/questions/66171

foreachを使い、Dictionaryとwebapiから取得したデータを
Addで紐付けを行いました。

これに加えて、紐付けに成功したものとしていないものに分けたいなと
思いifを使えば良いと考えたのですが、どうかくかわからず教えていた
だければと思います。
また出来ましたら、回答にコードの説明もしていただければ嬉しいです。
プログラムがあまりよくわからないので。

具体的には、
{"1234", new Kamoku {Id = "10000", Name = "国語" }},
であれば、"1234"とwebApiから持ってきたListAbのCord()が
一致したか・一致しなかったがわかるようにしたいです。

※ちなみになんですが、この一致したものと一致しなかったものを
Viewに表示させるにはどうすればいいんでしょうか。
一回Viewbugに入れればいいのでしょうか・・・・。
ちょっとやってみたんですが、エラーばかりで多分根本的に理解していないみたいなので。
お手数ですが、お願いします。

以下にコードは長いので省いている所もあります。

C#

1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Web; 5using System.Web.Mvc; 6using System.Text; 7using System.Net.Http; 8using System.Collections; 9using System.Web.Script.Serialization; 10using System.Threading.Tasks; 11using System.Net.Http.Headers; 12using System.Runtime.Serialization; 13using System.Runtime.Serialization.Json; 14using System.Xml.Serialization; 15 16namespace WebApplication1.Controllers 17{ 18 public class HomeController : Controller 19 { 20 string schoolBaseUrl = "https:~"; 21 string schoolDataArea = "abcde"; 22 23 //mappingsを定義 24 Dictionary<String, Kamoku> mappings = new Dictionary<String, Kamoku>() 25 { 26 {"1234", new Kamoku {Id = "10000", Name = "国語" }}, 27 {"1112", new Kamoku {Id = "10000", Name = "理科" }}, 28 {"1232, new Kamoku {Id = "10000", Name = "社会" }}, 29 {"1311", new Kamoku {Id = "10000", Name = "数学" }}, 30 {"1300", new Kamoku {Id = "10000", Name = "歴史" }}, 31 {"1400", new Kamoku {Id = "10000", Name = "英語" }}, 32 {"1178", new Kamoku {Id = "20000", Name = "体育" }}, 33 {"1423", new Kamoku {Id = "20000", Name = "宗教" }}, 34 35 36 37 public ActionResult Test() 38 { 39 try 40 { 41 Task<System.IO.Stream> response1 = postRequest(); 42 System.IO.Stream res1 = response1.Result; 43 // JSONデシリアライズ 44 var serializer1 = new DataContractJsonSerializer(typeof(PcaToken)); 45 PcaToken token = (PcaToken)serializer1.ReadObject(res1); 46 47 /* 48 Task<System.IO.Stream> response2 = getRequest(); 49 System.IO.Stream res2 = response2.Result; 50 var serializer2 = new DataContractJsonSerializer(typeof(List<CashOutUI>)); 51 List<CashOutUI> info = (List<CashOutUI>)serializer2.ReadObject(res2); 52 */ 53 54 Task<System.IO.Stream> response3 = getRequest(token.access_token); 55 System.IO.Stream res3 = response3.Result; 56 // XMLデシリアライズ 57 var serializer3 = new XmlSerializer(typeof(List<Ab>)); 58 59List<Ab> list = (List<Ab>)serializer3.Deserialize(res3); 60List<Kamoku> result = new List<Kamoku>(); 61 62foreach (Ab item in list) 63{ 64 result.Add(mappings[item.Code]); 65 //listの中からmappingのitem.codeを加えているので、 66 //ここにifで分岐させればいいのかなと考えていますが・・・ 67 68} 69 70 71 //Task<string> response4 = getRequestStr(token.access_token); 72 //string res4 = response4.Result; 73 74 //ViewBag.Message = info.Count; 75 //ViewBag.Message = token.access_token; 76 ViewBag.Message = ""; 77 } 78 catch (Exception ex) 79 { 80 Console.WriteLine(ex.Message); 81 } 82 83 84 return View(); 85 } 86 87 88 [DataContract] 89 public class Ab //WebAPIからとれる情報のクラス 90 { 91 [DataMember] 92 public string Id { get; set; } 93 [DataMember] 94 public string Number { get; set; } 95 [DataMember] 96 public string Code { get; set; } 97 [DataMember] 98 public string Deletable { get; set; } 99 [DataMember] 100 public string Name { get; set; } 101 [DataMember] 102 103 //Kamoku クラス 104 public class Kamoku //科目のIDと名称 105 { 106 public string Id { get; set; } 107 public string Name { get; set; } 108 } 109} 110

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2017/03/01 08:18

「以前に私が質問したもの」というのは https://teratail.com/questions/66171 ですよね? 前のスレッドと関連する質問の場合はその URL を明記するようお願いします。
退会済みユーザー

退会済みユーザー

2017/03/01 09:03

ご指摘、ありがとうございます。修正します。
guest

回答1

0

ベストアンサー

何がやりたいかよくわからなかったのでいくつか。

1.該当しなかったコードのリストを作成したい

var notApplicable = new List<String>(); foreach (Ab item in list) { Kamoku kamoku; if (mappings.TryGetValue(item.Code, out kamoku)) { result.Add(kamoku); } else { notApplicable.Add(item.Code); } }

2.item毎に値があったかどうか管理したい

// Abと一緒にマッチ結果を持つクラスを作る public class AbKamoku { public Ab Ab {get;set;} public bool HasKamoku {get;set;} public Kamoku Kamoku {get;set;} } var result = new List<AbKamoku>(); foreach (var item in list) { var abKamoku = new AbKamoku(); abKamoku.Ab = item; Kamoku kamoku; abKamoku.HasKamoku = mappings.TryGetValue(item.Code, out kamoku); abKamoku.Kamoku = kamoku; result.Add(abKamoku); }

投稿2017/03/01 08:30

haru666

総合スコア1593

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

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

退会済みユーザー

退会済みユーザー

2017/03/01 09:15

haru666さん、回答ありがとうございます。 foreach (Ab item in list) { result.Add(mappings[item.Code]); } の中で一致しなかったものと一致したものを分けたいので、回答下さった1でよいのかなと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問