将Object []转换为特定类型

时间:2014-02-24 16:11:48

标签: c# linq windows-phone-8

我正在开发一个使用LongListSelector的Windows手机应用程序。我声明了**IList**,其中包含LongListSelector的项目。

public IList SelectedItems = new List<Object>();

SelectedItems将包含在Selection changed事件中从LongListSelector的UI中选择/删除的项目,如下所示。

SelectedItems.Add(e.AddedItems); SelectedItems.Remove(e.AddedItems);

我想将SelectedItems投射到我的特定模型,我目前正在执行以下操作。

AwaitingJobs是我的模特列表。

List<AwaitingPickingJobModel> AwaitingJobs = new List<AwaitingPickingJobModel>();

dynamic selectedItemsObject = SelectedItems.OfType<Object>().ToList();
foreach (var items in selectedItemsObject )
{
    foreach (var item in items)
    {
        AwaitingPickingJobModel awaitingModel= item;
        AwaitingJobs.Add(awaitingModel);
    }
}

有没有办法可以使用linq或其他任何方式以更有效/更好的方式完成上述逻辑?

1 个答案:

答案 0 :(得分:3)

(你真的是说你想要转换对象吗?或者你的集合被声明为包含object但实际上包含你需要的类型?)

如果是前者,那么可能您正在寻找Enumerable.Cast method,它会将任何IEnumerable的元素转换为给定的类:

var awaitingJobs = SelectedItems.Cast<AwaitingPickingJobModel>();

对于后者,或者如果您的源列表可能包含多个不同类型,那么OfType方法可能是您的解决方案,并返回强类型集合:

var awaitingJobs = SelectedItems.OfType<AwaitingPickingJobModel>();

(我不确定您在发布的代码中使用OfType方法的原因,因为代码中的dynamic基本上是多余的。)