将两个本地查询结果组合成LinQ中的一个全局查询变量?

时间:2014-08-28 04:56:31

标签: c# linq

我的C#程序中有一些复选框,每个复选框对应一个数据库驱动表的一列。当用户检查每一个时,程序应该考虑对应于该列的查询并将结果存储在var类型变量中。最后,所有本地var类型查询结果,如果生成if块,需要组合成一个结果,如GlobalQueryVar,将在网格数据视图中呈现。 典型复选框的if语句如下所示:

if(IDCheckbox.checked)
    {
        localQuery0 = from MessageID in DB.AVLDATASets
                      select {MessageID, MessageID};
         if(GlobalQueryVar == null)
            *** GlobalQueryVar == localQuery0; // aren't the same type... How to cast
         else
           ****  GlobalQueryVar == GlobalQueryVar.concat(localQuery0); // apparently, doesn't work...
    }        

最后,所有本地查询都应该逐个附加到全局变量GlobalQueryVar,然后,我将使用.toArray()方法获取GlobalQueryVar并将结果发送到gridview。

现在,我有3个问题要处理这个案例: 1-我应该为GlobalQueryVar考虑什么类型的类型?... ... IEnumerbale或IQueryable或......?!

2-该行所需的投射方案是什么?由 * 签名?!

3-我怎么能在****签署的行中,当之无愧地把这些东西连成一起?!

提前致谢

1 个答案:

答案 0 :(得分:1)

为了快速解决您的问题,您可以

1)为像

这样的数据创建类
public class MessageData{
    public string Message {get;set;}
    public int MessageID {get;set;}
}

2)声明全局变量如

IQueryable<MessageData> GlobalQueryVar;

3)更改您的查询,如

localQuery0 = from msg in DB.AVLDATASets
              select new MessageData{ Message = msg.Message, MessageID = msg.MessageID};
在下一个代码应该工作后

if(GlobalQueryVar == null)
    GlobalQueryVar == localQuery0;
else
    GlobalQueryVar == GlobalQueryVar.concat(localQuery0);