Ответ lasseespeholt совершенно хорош (желательно, даже - нет смысла делать проекцию, если вы собираетесь отбросить результат), но если вы хотите применить это более широко, вы можете использовать запрос продолжение :
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;
Здесь я изменил вторую переменную с x
на y
, чтобы было ясно, что она отличается от оригинальной x
, но у вас нетчтобы сделать это.
Еще одна альтернатива, которая избегает двойного вызова Type.GetType, но все же помещает предложение where
перед окончательным проецированием, заключается в использовании предложения let
(которое, по общему признанию, вводит другой проект):1013 *
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"])
};