1

我有一个 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 个项目。我想将每个修饰符代码的值设置为一个属性:

     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 还不是很好:(

4

2 回答 2

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在 LINQ 查询中添加了检查。
  • 删除了多余的匿名类型构造。
  • 将 LINQ 查询结果转换为List<string>通过ToList().

但是,正如 BrokenGlass 所说,您最好存储一个列表。

于 2012-05-07T18:31:20.030 回答
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;
于 2012-05-07T18:32:27.097 回答