Si j'ai la requête LINQ suivante:
2018 1 100.00 2018 1 1500.00 2018 1 80.00 2018 1 5040.00 2018 1 60.00 2018 1 2018 1 30.52 2018 1 2018 1 0.36 2018 1 0.36 2018 1 2018 1
3 Réponses :
outstandingDataTotalData.Select(s => new AdjustmentTotal { SalYear = s.SalYear, SalMonth = s.SalMonth, Value = s.adjustment_value }).ToList();
Facilitez votre vie, n'extraitez pas les propriétés séparées. Effectuez l'extrait comme une matrice: } p> de sorte que vous vous retrouvez avec un objet avec 3 propriétés, deux cordes salxxx et une gamme de chaînes (les autres valeurs) . Le tableau des chaînes signifie que vous pouvez utiliser la linq Selectmany pour l'aplatir. Vous verrez dans l'exemple MSDN qu'ils ont des propriétaires avec des listes d'animaux domestiques (nombre variable d'animaux domestiques, mais vos valeurs sont un nombre fixe) et après SelectMany, il est aplatie dans une liste où le propriétaire se répète et il y a un animal de compagnie. Les valeurs de vos mocassasses sont les animaux domestiques, les valeurs Salxxx sont les propriétaires p> une fois que vous avez obtenu une requête de travail, vous pouvez réellement l'intégrer à la première requête. P> Désolé de ne pas avoir publié Exemple (et j'ai sauté les chèques nuls pour la clarté) - Le code est très difficile à utiliser sur un téléphone portable p> éditer: p> Alors, vous dites que vous voulez que les résultats dans un ordre particulier. Select et SelectMany ont à la fois une version où ils donneront l'index de l'élément et nous pouvons l'utiliser .. Parce que vous voulez essentiellement avoir ces objets: P>
obj.SelectMany((theOuter, outerIdx) =>
theOuter.C.Select((theInner, innerIdx) =>
new {
SalYear = theOuter.SalYear,
SalMonth = theOuter.SalMonth,
DataItem = theInner,
OuterIdx = outerIdx,
InnerIdx = innerIdx
}
)
).OrderBy(newObj => newObj.InnerIdx).ThenBy(newObj => newObj.OuterIdx)
Il y a un petit problème ici, je veux t2 ["réglage_value"] code> puis
t2 ["réglage_value"] code> à partir du second tableau et après que `t2 [" montant_outent "] CODE> ALORS CODE> T2 ["Montant_OUTSE"] `Du deuxième tableau et ainsi de suite. Ce code résolve la moitié du problème
Que puis-je dire! Tu es brillant, juste incroyable. Merci beaucoup, je suis vraiment reconnaissant de votre magie.
Utilisez un EUM:
class Program { static void Main(string[] args) { List<AdjustmentTotal> totals = new List<AdjustmentTotal>(); for (int i = 0; i < (int)VALUE.END; i++) { foreach (var data in outstandingDataTotalData) { AdjustmentTotal total = new AdjustmentTotal(); totals.Add(total); total.SalMonth = data.SalMonth; total.SalYear = data.SalYear; total._Type = (VALUE)i; switch ((VALUE)i) { case VALUE.adjustment_value : total.Value = data.adjustment_value; break; case VALUE.amount_outstanding: total.Value = data.amount_outstanding; break; case VALUE.amount_outstanding_ded: total.Value = data.mount_outstanding_ded; break; case VALUE.amount_outstanding_priv: total.Value = data.amount_outstanding_priv; break; case VALUE.diff_outstanding: total.Value = data.diff_outstanding; break; case VALUE.exchange_rate: total.Value = data.exchange_rate; break; } } } } } public enum VALUE { adjustment_value = 0, amount_outstanding = 1, amount_outstanding_priv = 2, amount_outstanding_ded = 3, diff_outstanding = 4, exchange_rate = 5, END = 6 } public class AdjustmentTotal { public string SalYear { get; set; } public string SalMonth { get; set; } public string Value { get; set; } public VALUE _Type { get; set; } }
Avez-vous essayé
exceptionnel datatotaldata .tolist (); code>?
@viveknuna Les propriétés ne sont pas les mêmes
Liste Totaux = exceptionnelleDatatotaldata.select (x => Nouveau réglageTotal () {salyear = x.salyear, salmonth = x.salmonth, valeur = x.ajustment_value}). Tolist ();
@jdweng:
valeur code> n'est pas toujours =
réglage_value code>
Vos chèques NULL peuvent être réduits à
montant_uite = T2? ["Montant_uite"]. Tostring () ?? "" code>. Si vous travaillez avec des datables dactylographiques, il peut être encore réduit en rendant la colonne une chaîne et en réglant la nullvalue à vide, puis il ne jette pas sur NULL
Utilisez le même code et définissez la valeur sur tout ce qu'il devrait être.
@Caiusjard: belle note
la valeur n'est pas toujours = Réglage_valu i> - Dans ce cas, apportez le réglage du code nécessaire, comme
valeur = somelogic? S.AdJustment_value: S.Ather_Value Code> Je ne pense pas que fait pourrait être discerné de ce qui a été posté
@JDWENG: la valeur de
valeur code> mai =
réglage_value ou montant_uite_out_out_out_out_out_out_out_out_out_out_out_out_out_out_out_out ou diff_uite ou Exchange_rate code> en fonction de l'exemple ci-dessus
@CAIUSJARD Il est basé sur les itérations non sur une logique spécifique que l'exemple ci-dessus.
Je ne t'ai pas vraiment eu. Je vois qu'il y a plus d'articles dans votre liste que vous ne réclamez vos sorties de requête, mais ce n'est pas évident pourquoi. Pouvez-vous ajouter plus d'explication?
Oh. Je pense que je l'obtiens; C'est comme l'impapot de n propriétés dans n rangées d'une propriété. Vous devriez rendre votre vie facile; Ne les tirez pas aux propriétés en premier lieu
@CAIUSJARD La requête SQL renvoie ce résultat et je souhaite que toutes les valeurs de ces propriétés répertoriées dans une propriété trichée en fonction des itérations comme exemple.
@Caiusjard exactement = impapot, je ne me souvenais pas de la terminologie: D
Suggestion - Si vous réduisez l'indentation, le code s'adaptera à l'écran. Mettez en surbrillance ces lignes dans VS et SHIFT + TAB.