我有一個這樣的IEnumerable物體串列
return entities.Select(g => new Model(
g.Field1,
g.Field2,
g.Field3
));
然而,一個需求發生了變化,我需要通過串列并檢查每個物體內的某個字串欄位,然后將其傳遞給一個模型。 如果字串欄位等于某個字串,例如 "a",那么它將以一種方式傳入模型,但是當字串欄位等于 "b "或 "c "甚至 "d "時,它將根據欄位的型別以不同的方式傳入模型。
return entities.
.GroupBy(x=> x.field =="a"/span>)
.Select(g => new Model(
g.Field1,
g.Field2,
g.Field3,
else[/span
.GroupBy(x=> x.field =="b"/span>)
.Select(g => new Model(
g.Field4,
g.Field5,
g.Field6,
else[/span
.GroupBy(x=> x.field =="c"/span>)
.Select(g => new Model(
g.Field7,
g.Field8,
g.Field9,
);
我正在考慮做一個foreach,然后做一個groupBy,然后做if陳述句。但不確定如何為該linq陳述句構建適當的語法。 另外,如果物體的數量達到幾百個,那么在這種情況下,foreach回圈是否可取?
uj5u.com熱心網友回復:
你可以使用切換運算式(自C#8以來的新運算式)。為了在EF中使用它,你首先必須選擇一個包含所有需要的屬性的匿名型別,并將其加載到記憶體中(例如,用ToList()):
return entities.Select(g => new
{
g.field, g.Field1, g.Field2, g.Field3,
g.Field4, g.Field5, g.Field6, G.Field7,
g.Field8, g.Field9
}).ToList().Select(g => g.field switch。
{
"a" => new Model(g.Field1, g.Field2, g.Field3)。
"b"/span> => new Model(g.Field4, g.Field5, g.Field6),
"c"/span> => new Model(g.Field7, g.Field8, g.Field9)
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/327601.html
標籤:
下一篇:從LINQ查詢中回傳一個命名元組
