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を小分けする気にもならないし…。