如何模拟派生表使用LINQ到实体 [英] How to simulate Derived table with linq to Entities

查看:130
本文介绍了如何模拟派生表使用LINQ到实体的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我如何可以模拟派生表的LINQ?

考虑这个code:

  SELECT * FROM(SELECT * FROM MYTBL)AS tmp其中tmp.ID = 1
 

我如何使用LINQ写的吗?

感谢

修改1:

如何将其转换为LINQ:

 选择
转换(十进制(10,1),ROUND(A.c2 * 100,8)),
转换(十进制(10,1),ROUND(A.c3 * 100,8))
从
(
选择
    (
        选择转换(INT,COUNT(ID))
        从TBL
        WHERE(col06> = @param_Min和col06< = @param_Max)

    )
    /
    (
        选择转换(INT,COUNT(ID))
        从TBL
        WHERE(col06> = 10)
    )为C2
    (
        选择转换(INT,COUNT(ID))
        从TBL
        WHERE(col06> = @param_Min和col06< = @param_Max)
            与(col03 = 1)
    )
    /
    (
        选择转换(INT,COUNT(ID))
        从TBL
        WHERE(col06> = 10)和(col03 = 1)
    )为C3
) 作为一个
 

解决方案
  1. ** SELECT * FROM(SELECT * FROM MYTBL)AS tmp其中tmp.ID = 1 **

LINQ的版本

  VAR的结果= db.MyTbl.Where(X => x.ID == 1);
 

2。

  VAR的查询=
                让C1 =从B在db.MyTbl
                                  其中,b.col06> = @ p​​aram_Min //一些条件
                                  选择b.ID
                让C2 =从B在db.MyTbl
                                  其中,b.col06> = 10 //一些条件
                                  选择b.ID
                让C3 =从B在db.MyTbl
                                   其中,b.col06> = @ p​​aram_Min //一些条件
                                  选择b.ID

                选择新
                {
                    c2.ID,//在此执行圆形等操作
                    c3.ID//perform圆形并在此等操作

                };
 

How I can simulate Derived Table with linq?

Consider this Code:

SELECT * FROM (SELECT * FROM Mytbl) AS tmp WHERE tmp.ID=1

How I can write this with Linq ?

thanks

EDIT 1:

How to convert this to linq?:

select 
convert( decimal(10,1), ROUND(A.c2*100,8)),
convert( decimal(10,1), ROUND(A.c3*100,8))
from
(
SELECT 
    (
        SELECT CONVERT(INT, COUNT(ID))
        FROM tbl
        WHERE (col06 >= @param_Min and col06 <= @param_Max )

    )
    /  
    (
        SELECT CONVERT(INT, COUNT(ID))
        FROM tbl
        WHERE (col06 >= 10 )                    
    ) as c2
    (
        SELECT CONVERT(INT, COUNT(ID))
        FROM tbl
        WHERE (col06 >= @param_Min and col06 <= @param_Max )
            AND (col03 = 1)
    )
    /  
    (
        SELECT CONVERT(INT, COUNT(ID))
        FROM tbl
        WHERE (col06 >= 10 ) AND (col03 = 1)    
    ) as c3
) AS A

解决方案

  1. **SELECT * FROM (SELECT * FROM Mytbl) AS tmp WHERE tmp.ID=1**

Linq version

var result = db.MyTbl.Where( x => x.ID == 1);

2.

 var query = 
                let c1= from b in db.MyTbl
                                  where b.col06 >= @param_Min//some condition
                                  select b.ID
                let c2= from b in db.MyTbl
                                  where b.col06 >= 10//some condition
                                  select b.ID
                let c3=from b in db.MyTbl
                                   where b.col06 >= @param_Min//some condition
                                  select b.ID

                select new
                { 
                    c2.ID,//perform Round and other operation on this  
                    c3.ID//perform Round and other operation on this 

                };

这篇关于如何模拟派生表使用LINQ到实体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆