ここに簡単な LINQ クエリがあります。
var Staffs = new[]
{
new { id = 1, name = "Jefferson", age = 42},
new { id = 2, name = "Jacobson", age = 54},
new { id = 3, name = "Zhang", age = 34}
};
var payroll = new[]
{
new { pid = 1, wage = 5000},
new { pid = 2, wage = 6500},
new { pid = 3, wage = 6700}
};
var q = from stf in Staffs
from pay in payroll
where stf.id == pay.pid
select new
{
stfObj = stf,
pay.pid,
pay.wage
};
ここで、stfObj は、id、name、および age フィールドを含むオブジェクトになります。
ここに質問があります:
次のようにフィールド名を明示的にハードコーディングせずに、オブジェクトをフィールド自体に変換することは可能ですか?
select new
{
stf.id,
stf.name,
stf.age,
pay.pid,
pay.wage
};
このようにして、たとえば性別などの新しいフィールドをスタッフに追加するときに、select new ブロックを変更する必要はありません。
それは可能ですか?
(わかりました、これはここの質問のように見えます...とにかく、ここでより良い答えを得ることを望んでいます)