0

如何将以下列表转换为 LINQ?其中 QueueDataSource 是 ArrayList。

         switch (queue.QueueTypeID)
        {
            case (int)QueryType.DataEntry:
                dataEntryQueue.QueueDataSource.Add(new
                {
                    QueueID = queue.QueueID,
                    LinkText = queueName,
                    Uid = sentinel
                });
                break;
            case (int)QueryType.Sort:
                sortingQueue.QueueDataSource.Add(new
                {
                    QueueID = queue.QueueID,
                    LinkText = queueName,
                    Uid = sentinel
                });
                break;
            case (int)QueryType.CaseList:
                myQueue.QueueDataSource.Add(new
                {
                    QueueID = queue.QueueID,
                    LinkText = queueName,
                    Uid = sentinel
                });
                break;
        }
4

2 回答 2

0

我不完全确定您在问题中要问什么。如果要能够使用 Linq 访问 ArrayLists,则使用 LinqCast<T>()OfType<T>()方法,例如

dataEntryQueue.QueueDataSource.Cast<QueueItem>().Where( q => q.QueueID == 1 ) ...

或者如上所述摆脱 ArrayList 并使用List<T>.

在这两种情况下,您都需要定义 QueueItem 类并使用它来代替代码中的匿名类型。

否则@yBee 的答案似乎就是你所追求的。

于 2013-02-19T07:22:27.587 回答
0

根据您的代码 wheresource是可枚举的queue

dataEntryQueue.QueueDataSource.AddRange((from queue in source
                                         where queue.QueueTypeID == QueryType.DataEntry
                                         select new {
                                                        QueueID = queue.QueueID,
                                                        LinkText = queueName,
                                                        Uid = sentinel
                                                    }).ToList());

对于其他两个数组列表也是如此。

于 2013-02-19T07:28:31.627 回答