What I am trying to achieve is converting this foreach loop to a LINQ equivalent. The current code loops through a list of generic objects IE List which are DB objects and then creates local objects based off of the object Type.
foreach (var message in messages)
{
if (message is TextMessageData)
{
output.Add(new TextMessage
{
Content = ((TextMessageData)message).Content,
Sender = ((TextMessageData)message).Sender,
TimeSent = ((TextMessageData)message).TimeSent
});
}
else if(message is ImageDataRecord)
{
output.Add(new ImageMessage
{
ImageUrl = ((ImageDataRecord)message).Url,
Sender = ((ImageDataRecord)message).Sender,
TimeSent = ((ImageDataRecord)message).TimeSent
});
}
}
Thus far my code looks like this, however, I am unsure of how to return a result set for each if statement condition
var data = from message in messages
where message is TextMessageData
select new TextMessage
{
Content = ((TextMessageData)message).Content,
Sender = ((TextMessageData)message).Sender,
TimeSent = ((TextMessageData)message).TimeSent
};