如何使用匿名类的通用列表获取列表数据

问题描述 投票:0回答:1

我有一个通用的匿名类,如下所示:

public class wfassignmentList : List<wfassignment>
    {
        public wfassignmentList(DataConnectDataContext db)
        {
            var query =
                from a in db.wfassignments
                group a by new
                {
                    a.hasld
                } into g
                select new
                {
                    NSRPBO =
                      (from wfassignments in db.wfassignments
                       where
                         wfassignments.ownertable == "PR" &&
                         wfassignments.roleid == "NSRPBO" &&
                         wfassignments.assignstatus == "ACTIVE"
                       select new
                       {
                           wfassignments.roleid
                       }).Count(p => p.roleid != null),
                    NSRPSV2 =
                      (from wfassignments in db.wfassignments
                       where
                         wfassignments.ownertable == "PR" &&
                         wfassignments.roleid == "NSRPSV2" &&
                         wfassignments.assignstatus == "ACTIVE"
                       select new
                       {
                           wfassignments.roleid
                       }).Count(p => p.roleid != null),
                    ORIGINATOR =
                      (from wfassignments in db.wfassignments
                       where
                         wfassignments.ownertable == "PR" &&
                         wfassignments.roleid == "ORIGINATOR" &&
                         wfassignments.assignstatus == "ACTIVE"
                       select new
                       {
                           wfassignments.roleid
                       }).Count(p => p.roleid != null),
                    NSRPSV1 =
                      (from wfassignments in db.wfassignments
                       where
                         wfassignments.ownertable == "PR" &&
                         wfassignments.roleid == "NSRPSV1" &&
                         wfassignments.assignstatus == "ACTIVE"
                       select new
                       {
                           wfassignments.roleid
                       }).Count(p => p.roleid != null),
                    NSRPSV3 =
                      (from wfassignments in db.wfassignments
                       where
                         wfassignments.ownertable == "PR" &&
                         wfassignments.roleid == "NSRPSV3" &&
                         wfassignments.assignstatus == "ACTIVE"
                       select new
                       {
                           wfassignments.roleid
                       }).Count(p => p.roleid != null),
                    NSRPSV =
                      (from wfassignments in db.wfassignments
                       where
                         wfassignments.ownertable == "PR" &&
                         wfassignments.roleid == "NSRPSV" &&
                         wfassignments.assignstatus == "ACTIVE"
                       select new
                       {
                           wfassignments.roleid
                       }).Count(p => p.roleid != null),
                    NSRPFM =
                      (from wfassignments in db.wfassignments
                       where
                         wfassignments.ownertable == "PR" &&
                         wfassignments.roleid == "NSRPFM" &&
                         wfassignments.assignstatus == "ACTIVE"
                       select new
                       {
                           wfassignments.roleid
                       }).Count(p => p.roleid != null),
                    NSRPME =
                      (from wfassignments in db.wfassignments
                       where
                         wfassignments.ownertable == "PR" &&
                         wfassignments.roleid == "NSRPME" &&
                         wfassignments.assignstatus == "ACTIVE"
                       select new
                       {
                           wfassignments.roleid
                       }).Count(p => p.roleid != null),
                    NSRPMM =
                      (from wfassignments in db.wfassignments
                       where
                         wfassignments.ownertable == "PR" &&
                         wfassignments.roleid == "NSRPMM" &&
                         wfassignments.assignstatus == "ACTIVE"
                       select new
                       {
                           wfassignments.roleid
                       }).Count(p => p.roleid != null),
                    NSRPPM =
                      (from wfassignments in db.wfassignments
                       where
                         wfassignments.ownertable == "PR" &&
                         wfassignments.roleid == "NSRPPM" &&
                         wfassignments.assignstatus == "ACTIVE"
                       select new
                       {
                           wfassignments.roleid
                       }).Count(p => p.roleid != null)
                };
            foreach (var r in query)
            {
                Add(new wfassignment(
                    r.NSRPBO, r.NSRPSV2, r.ORIGINATOR, r.NSRPSV1, r.NSRPSV3,
                    r.NSRPSV, r.NSRPFM, r.NSRPME, r.NSRPMM, r.NSRPPM));
            }
        }
    }

我试图像这样的Web服务那样获取数据,但无法正常工作。

[WebMethod]
    public List<wfassignment> getList() 
    {

        DataConnectDataContext db = new DataConnectDataContext();
        var query = (from a in db.wfassignments
                     group a by new
                     {
                         a.hasld
                     } into g
                     select new 
                     {
                         NSRPBO =
                           (from wfassignments in db.wfassignments
                            where
                              wfassignments.ownertable == "PR" &&
                              wfassignments.roleid == "NSRPBO" &&
                              wfassignments.assignstatus == "ACTIVE"
                            select new
                            {
                                wfassignments.roleid
                            }).Count(p => p.roleid != null),
                         NSRPSV2 =
                           (from wfassignments in db.wfassignments
                            where
                              wfassignments.ownertable == "PR" &&
                              wfassignments.roleid == "NSRPSV2" &&
                              wfassignments.assignstatus == "ACTIVE"
                            select new
                            {
                                wfassignments.roleid
                            }).Count(p => p.roleid != null),
                         ORIGINATOR =
                           (from wfassignments in db.wfassignments
                            where
                              wfassignments.ownertable == "PR" &&
                              wfassignments.roleid == "ORIGINATOR" &&
                              wfassignments.assignstatus == "ACTIVE"
                            select new
                            {
                                wfassignments.roleid
                            }).Count(p => p.roleid != null),
                         NSRPSV1 =
                           (from wfassignments in db.wfassignments
                            where
                              wfassignments.ownertable == "PR" &&
                              wfassignments.roleid == "NSRPSV1" &&
                              wfassignments.assignstatus == "ACTIVE"
                            select new
                            {
                                wfassignments.roleid
                            }).Count(p => p.roleid != null),
                         NSRPSV3 =
                           (from wfassignments in db.wfassignments
                            where
                              wfassignments.ownertable == "PR" &&
                              wfassignments.roleid == "NSRPSV3" &&
                              wfassignments.assignstatus == "ACTIVE"
                            select new
                            {
                                wfassignments.roleid
                            }).Count(p => p.roleid != null),
                         NSRPSV =
                           (from wfassignments in db.wfassignments
                            where
                              wfassignments.ownertable == "PR" &&
                              wfassignments.roleid == "NSRPSV" &&
                              wfassignments.assignstatus == "ACTIVE"
                            select new
                            {
                                wfassignments.roleid
                            }).Count(p => p.roleid != null),
                         NSRPFM =
                           (from wfassignments in db.wfassignments
                            where
                              wfassignments.ownertable == "PR" &&
                              wfassignments.roleid == "NSRPFM" &&
                              wfassignments.assignstatus == "ACTIVE"
                            select new
                            {
                                wfassignments.roleid
                            }).Count(p => p.roleid != null),
                         NSRPME =
                           (from wfassignments in db.wfassignments
                            where
                              wfassignments.ownertable == "PR" &&
                              wfassignments.roleid == "NSRPME" &&
                              wfassignments.assignstatus == "ACTIVE"
                            select new
                            {
                                wfassignments.roleid
                            }).Count(p => p.roleid != null),
                         NSRPMM =
                           (from wfassignments in db.wfassignments
                            where
                              wfassignments.ownertable == "PR" &&
                              wfassignments.roleid == "NSRPMM" &&
                              wfassignments.assignstatus == "ACTIVE"
                            select new
                            {
                                wfassignments.roleid
                            }).Count(p => p.roleid != null),
                         NSRPPM =
                           (from wfassignments in db.wfassignments
                            where
                              wfassignments.ownertable == "PR" &&
                              wfassignments.roleid == "NSRPPM" &&
                              wfassignments.assignstatus == "ACTIVE"
                            select new
                            {
                                wfassignments.roleid
                            }).Count(p => p.roleid != null)
                     });
        List<wfassignment> listdata = new List<wfassignment>();
        foreach (var r in query)
            listdata.Add(new wfassignment(
                r.NSRPBO, r.NSRPSV2, r.ORIGINATOR, r.NSRPSV1, r.NSRPSV3,
                r.NSRPSV, r.NSRPFM, r.NSRPME, r.NSRPMM, r.NSRPPM));
        return listdata;
    }

xml文件返回没有我期望的任何字段,我不知道哪里不正确。

这是wfassignment类:

public partial class wfassignment
{

    private long _assignid;

    private string _description;

    private string _assigncode;

    private System.Nullable<System.DateTime> _startdate;

    private System.Nullable<System.DateTime> _duedate;

    private short _emailnotification;

    private string _assignstatus;

    private long _wfid;

    private string _ownertable;

    private System.Nullable<long> _ownerid;


    private short _hasld;

    private long? _NSRPBO;
    private long? _NSRPSV2;
    private long? _ORIGINATOR;
    private long? _NSRPSV1;
    private long? _NSRPSV3;
    private long? _NSRPSV;
    private long? _NSRPFM;
    private long? _NSRPME;
    private long? _NSRPMM;
    private long? _NSRPPM;

    public wfassignment(long? ANSRPBO, long? ANSRPSV2, long? AORIGINATOR, long? ANSRPSV1,
    long? ANSRPSV3, long? ANSRPSV, long? ANSRPFM, long? ANSRPME,
    long? ANSRPMM, long? ANSRPPM)
    {
        _NSRPBO = ANSRPBO;
        _NSRPSV2 = ANSRPSV2;
        _ORIGINATOR = AORIGINATOR;
        _NSRPSV1 = ANSRPSV1;
        _NSRPSV3 = ANSRPSV3;
        _NSRPSV = ANSRPSV;
        _NSRPFM = ANSRPFM;
        _NSRPME = ANSRPME;
        _NSRPMM = ANSRPMM;
        _NSRPPM = ANSRPPM;
    }

    public wfassignment() { }

    public long? NSRPBO { get { return _NSRPBO; } }
    public long? NSRPSV2 { get { return _NSRPSV2; } }
    public long? ORIGINATOR { get { return _ORIGINATOR; } }
    public long? NSRPSV1 { get { return _NSRPSV1; } }
    public long? NSRPSV3 { get { return _NSRPSV3; } }
    public long? NSRPSV { get { return _NSRPSV; } }
    public long? NSRPFM { get { return _NSRPFM; } }
    public long? NSRPME { get { return _NSRPME; } }
    public long? NSRPMM { get { return _NSRPMM; } }
    public long? NSRPPM { get { return _NSRPPM; } }

这是我的Linq查询结果。enter image description here

请帮助我,非常感谢!

c# web-services generic-list
1个回答
0
投票

您需要添加Serializable属性以指示可以序列化Serializable类:

© www.soinside.com 2019 - 2024. All rights reserved.