我有一个LINQ查询:
var result = (from CC in hc.ClaimCodings
join CM in hc.ClaimCodingProcedureCodeModifierXrefs on CC.ClaimCodingID equals CM.ClaimCodingID
join PCM in hc.ProcedureCodeModifiers on CM.ProcedureCodeModifierID equals PCM.ProcedureCodeModifierID
where CC.CTCustomerSubID == custSub && CC.ClaimID == claimID
select new { PCM.ModifierCode });
修改的
哪个可以返回0到4个项目。我想将每个Modifier代码的值设置为属性:
public string ModCode1 { get; set; }
public string ModCode2 { get; set; }
public string ModCode3 { get; set; }
public string ModCode4 { get; set; }
Modcode1 = result.ModifierCode.getindex(0).firstordefault();
ModeCode2 = second result's ModifierCode;
etc
etc
除非我接近这个完全错误。我对LINQ不太满意:(
答案 0 :(得分:3)
这是你的想法吗?
var result =
(
from CC in hc.ClaimCodings
join CM in hc.ClaimCodingProcedureCodeModifierXrefs
on CC.ClaimCodingID equals CM.ClaimCodingID
join PCM in hc.ProcedureCodeModifiers
on CM.ProcedureCodeModifierID equals PCM.ProcedureCodeModifierID
where CC.CTCustomerSubID == custSub && CC.ClaimID == claimID &&
PCM.ModifierCode != null
select PCM.ModifierCode
).ToList();
ModCode1 = result.Length > 0 ? result[0] : null;
ModCode2 = result.Length > 1 ? result[1] : null;
ModCode3 = result.Length > 2 ? result[2] : null;
ModCode4 = result.Length > 3 ? result[3] : null;
主要变化:
PCM.ModifierCode != null
检查。List<string>
将LINQ查询结果转换为ToList()
。然而,正如BrokenGlass所说,你最好存储一个列表。
答案 1 :(得分:1)
您可以在结果上调用ToArray()以立即执行查询并返回值的数组。然后,您可以使用一些检查数组长度的三元运算符简写为属性赋值。
res = result.Take(4).ToArray();
Modcode1 = res.Length > 0 ? res[0] : null;
Modcode2 = res.Length > 1 ? res[1] : null;
Modcode3 = res.Length > 2 ? res[2] : null;
Modcode4 = res.Length > 3 ? res[3] : null;