VisualStudioの単体テスト機能を使ってCollection要素を比較する方法です。って言っても「CollectionAssert.AreEqual メソッド(http://msdn.microsoft.com/ja-jp/library/ms243763(v=vs.100))」で一発です。Collection要素を比較するってこと事態まれではあると思いますが、たまたま使ったので…。
以下、しょうもないサンプルです。
[TestMethod()] public void MyMethodTest() { MyClass target = new MyClass(); var expected = new Collection<string> { "Tanaka", "Suzuki", "Yamada" }; Collection<string> actual; actual = target.MyMethod(); //デフォルトのAssert.AreEqualだとこけます //Assert.AreEqual(expected, actual); CollectionAssert.AreEqual(expected, actual); //Assert.Inconclusive("このテストメソッドの正確性を確認します。"); }
2.LINQでテーブルを多重結合する際の悩み
LINQでちょこちょこテーブルを多重に結合する訳なんですが、これが下記のコードのように多重化すればするほどややこしくなっていかんって話。
var myQuery = from p in (from p in (from p in elements1 join g in elements2 on p.ACd equals g.ACd select new { p, g }) join g in elements3 on p.p.BCd equals g.BCd select new { p, g }) join g in elements4 on p.p.p.CCd equals g.CCd select new { elements1 = p.p.p, elements2 = p.p.g, elements3 = p.g, elements4 = g };見ての通り、pとgのオンパレードです。とりあえず最終的にテーブル名に戻していますが、何かもうちょっとスマートにならんかなぁって感じです。かといっていちいちSELECT句で名前付けたり、LINQを小分けする気にもならないし…。