La réponse de lasseespeholt est parfaitement bien (préférable, même - il est inutile de faire une projection si vous allez jeter le résultat), mais si vous voulez appliquer cette plus en général, vous pouvez utiliser une suite de requête :
var checkBoxes = from x in FindAll<CheckBox>()
where x.Checked
select new
{
RecordType = Type.GetType(x.Attributes["RecordType"]),
RecordId = Int32.Parse(x.Attributes["RecordId"])
} into y
where y.RecordType != typeof(DomainModel.Group)
select y;
ici, j'ai changé la deuxième variable x
-y
pour préciser qu'il est distinct de l'original x
, mais vous n'avez pas à le faire.
Une autre alternative qui évite d'appeler deux fois Type.GetType mais mettre encore la clause where
avant la projection finale consiste à utiliser une clause let
(qui introduit une autre projection elle-même, il est vrai):
var checkBoxes = from x in FindAll<CheckBox>()
where x.Checked
let t = Type.GetType(x.Attributes["RecordType]")
where t != typeof(DomainModel.Group)
select new
{
RecordType = t
RecordId = Int32.Parse(x.Attributes["RecordId"])
};
Ah. Bien sur :) Merci pour votre réponse rapide! – asgerhallas
Il sera accepté dans 8 minutes. – asgerhallas
+1 en utilisant let mot-clé est une bonne idée. btw pouvons-nous utiliser une méthode comme "let" mot-clé dans les expressions linq génériques? vois ma réponse. –