我有两个收藏夹
<p:selectOneMenu id="qupdate" value="#{object.pquantity}">
<f:selectItem styleClass="form-control"
itemLabel="-- SELECT QUANTITY -- " itemValue=""
noSelectionOption="true" />
<f:selectItems value="#{selectonemenu.quantoptions}" var="f"
itemLabel="#{f}" itemValue="#{f}" />
<p:ajax execute="qupdate" event="change"
listener="#{Bean.quantitychange(object.pquantity, object.id)}" />
</p:selectOneMenu>
,我需要使用 db_materials 集合中的 ValueColumn 更新材料集合中的所有 Value 属性。>
如何执行此操作?
答案 0 :(得分:1)
您也可以不加入联接而这样做。 尝试以下代码段:
materials.ForEach(x => x.Value = db_materials.FirstOrDefault(y => y.Number == x.Number).ValueColumn);
ForEach()将更新原始实例本身中的值。无需使用循环或联接。
答案 1 :(得分:1)
您也可以使用AND查询来更新主集合,为此您需要与第一列连接,然后与第二列连接where子句以进行更新。您可以在此处查看示例, https://codeshowtime.blogspot.com/2020/01/linq-tricks.html
答案 2 :(得分:0)
这里没有连接:
materials = materials.Select(c => { c.Value = db_materials.Where(dbm => dbm.Number == c.Number).ToList().FirstOrDefault().Value; return c; }).ToList();
答案 3 :(得分:0)
我测试了以下代码,并且有效
var joins = from material in materials
join db_material in db_materials on material.Number equals db_material.Number
select new { material = material, db = db_material};
foreach (var join in joins)
{
join.material.Value = join.db.ValueColumn;
}