none
domainservice中distinct怎么用 RRS feed

  • 问题

  •         public IQueryable<TPj_Sysbase> GetTPj_Sysbase()
            {
                return this.ObjectContext.TPj_Sysbase;
            }

    类似sql语句:SELECT distinct fscope FROM TPj_Sysbase

    请问在 DomainService.cs 的文件中该怎么写?

    有没有类似查询的资料,比如教程之类的,本人新转silverlight开发,

    2012年4月1日 10:54

答案

  • 你好,

    不好意思,是我的疏忽。

    对于自定义方法,要对该方法添加操作特性,如InvokeAttribute

    更多信息请参考:http://msdn.microsoft.com/zh-cn/library/ff423220%28v=vs.91%29.aspx

    例如:

            [Invoke]
            public IEnumerable<double> Getfscope() // 返回值不是IQueryable<T>
            {
                return this.ObjectContext.TPj_Sysbase.Select(t=>t.fscope).Distinct();
            }

    那在客户端会对这个方法生成 InvokeOperation<T>的实例,你可以使用Value 属性来获取返回值:

    cotext.Getfscope(io=>{var resutl = io.Value;},null);

    上面的Results就是你要的结果。


    Daoping Liu - MSFT

    2012年4月5日 3:27
    版主

全部回复

  • 你好,

    你只需要使用LINQ查询语句就可以了。

    你上面的TPj_Sysbase,返回的是一个ObjectSet(TEntity) 对象,所以你可以对其使用LINQ技术(因为ObjectSet(TEntity) 实现了IEnumerable<T> 接口 )。

    例如根据你上面的要求,你的方法可以改为(假如你的fscope是double类型)

            public IQueryable<double> Getfscope()
            {
                return this.ObjectContext.TPj_Sysbase.Select(t=>t.fscope).Distinct();
            }

    或者

            public IQueryable<double> Getfscope()
            {
                return (from t in this.ObjectContext.TPj_Sysbase select t.fscope).Distinct();
            }

    关于更多的LINQ信息,请参考以下文档:

    http://msdn.microsoft.com/zh-cn/library/bb397926.aspx


    Daoping Liu - MSFT

    2012年4月3日 2:59
    版主
  • 你好,

    你只需要使用LINQ查询语句就可以了。

    你上面的TPj_Sysbase,返回的是一个ObjectSet(TEntity) 对象,所以你可以对其使用LINQ技术(因为ObjectSet(TEntity) 实现了IEnumerable<T> 接口 )。

    例如根据你上面的要求,你的方法可以改为(假如你的fscope是double类型)

            public IQueryable<double> Getfscope()
            {
                return this.ObjectContext.TPj_Sysbase.Select(t=>t.fscope).Distinct();
            }

    或者

            public IQueryable<double> Getfscope()
            {
                return (from t in this.ObjectContext.TPj_Sysbase select t.fscope).Distinct();
            }

    关于更多的LINQ信息,请参考以下文档:

    http://msdn.microsoft.com/zh-cn/library/bb397926.aspx


    Daoping Liu - MSFT

    很感谢版主的热心回复,

            public IQueryable<double> Getfscope()
            {
                return this.ObjectContext.TPj_Sysbase.Select(t=>t.fscope).Distinct();
            }

    服务端添加了这个方法,那客户端如何调用啊,loadoperation只能针对entity对象。

    2012年4月5日 1:44
  • 你好,

    不好意思,是我的疏忽。

    对于自定义方法,要对该方法添加操作特性,如InvokeAttribute

    更多信息请参考:http://msdn.microsoft.com/zh-cn/library/ff423220%28v=vs.91%29.aspx

    例如:

            [Invoke]
            public IEnumerable<double> Getfscope() // 返回值不是IQueryable<T>
            {
                return this.ObjectContext.TPj_Sysbase.Select(t=>t.fscope).Distinct();
            }

    那在客户端会对这个方法生成 InvokeOperation<T>的实例,你可以使用Value 属性来获取返回值:

    cotext.Getfscope(io=>{var resutl = io.Value;},null);

    上面的Results就是你要的结果。


    Daoping Liu - MSFT

    2012年4月5日 3:27
    版主