Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何使用LINQ to SQL仅获取1.0和0.5值?_Vb.net_Linq_Linq To Sql - Fatal编程技术网

Vb.net 如何使用LINQ to SQL仅获取1.0和0.5值?

Vb.net 如何使用LINQ to SQL仅获取1.0和0.5值?,vb.net,linq,linq-to-sql,Vb.net,Linq,Linq To Sql,我有一个从-20,00到20,00的参数列表,步骤是0,25。 有时我需要整个列表,但在某些情况下,我只需要步骤0.50的参数 ex:值为1.00;1.25; 1.50 ; 1.75 ; 2.00 ; 2.25; 2.50 ; 2.75 ; 3.00我只需要1.00;1.50 ; 2.00 ; 2.50 ; 三点 我试过这个 return From le In dbiLens.Lens Join dia In dbiLens.LensDiameters On dia.

我有一个从-20,00到20,00的参数列表,步骤是0,25。 有时我需要整个列表,但在某些情况下,我只需要步骤0.50的参数 ex:值为1.00;1.25; 1.50 ; 1.75 ; 2.00 ; 2.25; 2.50 ; 2.75 ; 3.00我只需要1.00;1.50 ; 2.00 ; 2.50 ; 三点

我试过这个

 return From le In dbiLens.Lens
             Join dia In dbiLens.LensDiameters On dia.DiameterID Equals le.DiameterID
             Join krom In dbiLens.LensKrommings On krom.KrommingID Equals le.KrommingID
             Join sterk In dbiLens.LensSterktes On sterk.SterkteID Equals le.SterkteID       
    Where Right(CStr(le.Sterkte), 2) <> "25" Or Right(CStr(le.Sterkte), 2) <> "75"
        Where (le.TypeID = pLensTypeID AndAlso le.GebruiksduurID = pLensPeriodeID _
        AndAlso dia.Diameter = pLensDiaMin _
        AndAlso krom.Kromming = pLensKromMin _
        AndAlso sterk.Sterkte >= pLensSterkteMin AndAlso sterk.Sterkte <= LensSterkteMax)
                                Select le
Return From le In dbiLens.Lens
         Join dia In dbiLens.LensDiameters On dia.DiameterID Equals le.DiameterID
         Join krom In dbiLens.LensKrommings On krom.KrommingID Equals le.KrommingID
         Join sterk In dbiLens.LensSterktes On sterk.SterkteID Equals le.SterkteID _        
Where sterk.sterkte Mod 0.50 = 0 
    Where (le.TypeID = pLensTypeID AndAlso le.GebruiksduurID = pLensPeriodeID _
    AndAlso dia.Diameter = pLensDiaMin _
    AndAlso krom.Kromming = pLensKromMin _
    AndAlso sterk.Sterkte >= pLensSterkteMin AndAlso sterk.Sterkte <= pLensSterkteMax)
                            Select le
在dbiLens.Lens中从le返回
在直径等于直径的直径上连接直径
在krom.KrommingID上的dbiLens.LensKrommings中加入krom等于le.KrommingID
在sterk.SterkteID上的dbiLens.LensSterktes中加入sterk等于le.SterkteID
其中右(CStr(le.Sterkte),2)“25”或右(CStr(le.Sterkte),2)“75”
其中(le.TypeID=pLensTypeID,并且le.GebruiksduurID=pLensPeriodeID_
并且直径=正压送风系统直径_
并且也可以是krom.Kromming=pLensKromMin_
AndAlso sterk.Sterkte>=pLensSterkteMin AndAlso sterk.Sterkte=pLensSterkteMin AndAlso sterk.Sterkte
或在方法语法中:

Dim halfOrInteger = numbers.Where(Function(n) n * 2 Mod 1 = 0)
编辑:显然LINQ to SQL无法将其转换为工作SQL

算术运算符和比较运算符在公共环境中按预期工作 语言运行时(CLR),以下情况除外:

  • SQL不支持浮点数上的模运算符

我必须承认,我对LINQ to SQL的使用经验很少,但似乎无法使用最有用的函数/运算符,如%/Mod或IndexOfAny。但请尝试以下操作(包括本地化问题;):

或在方法语法中:

Dim halfOrInteger = numbers.Where(Function(n) n * 2 Mod 1 = 0)
编辑:显然LINQ to SQL无法将其转换为工作SQL

算术运算符和比较运算符在公共环境中按预期工作 语言运行时(CLR),以下情况除外:

  • SQL不支持浮点数上的模运算符

我必须承认,我对LINQ to SQL只有很少的经验,但似乎无法使用像%/Mod或IndexOfAny这样最有用的函数/运算符。但请尝试以下内容(包括本地化问题;):


如果列出了要匹配的值:

Dim requiredSterkte As New List(Of Double)
For i = 2 To 6
    requiredSterkte.Add(i * 0.5)
Next
然后你可以用

Where requiredSterkte.Contains(le.Sterkte)

有时,尝试在一行中完成所有工作是不值得的。

如果您列出了要匹配的值:

Dim requiredSterkte As New List(Of Double)
For i = 2 To 6
    requiredSterkte.Add(i * 0.5)
Next
然后你可以用

Where requiredSterkte.Contains(le.Sterkte)

有时,尝试在一行中完成所有操作是不值得的。

thx用于快速响应,但两种解决方案都给了我相同的错误“操作数数据类型float对于模运算符无效”。我知道没有一个参数来自float类型,它们是double类型。原因似乎是这里的第一点:thx用于帮助。在这种情况下,安德鲁·莫顿的解决方案更有效。虽然你们的例子让我对Delet语句有了更多的了解。Grtz@Bongo:对于快速响应,
let
类似于loop.thx中的一个变量,但两种解决方案都给出了相同的错误“操作数数据类型float对于模运算符无效”。我知道没有一个参数来自float类型,它们是double类型。原因似乎是这里的第一点:thx用于帮助。在这种情况下,安德鲁·莫顿的解决方案更有效。虽然你们的例子让我对Delet语句有了更多的了解。Grtz@Bongo:let
类似于循环中的变量。where right(Cstr…)或where。。。摩登派青年应仅在join sterk行上工作,因为这些参数位于lenssterktes表的where right(Cstr…)或where。。。摩登派青年应仅在join sterk行上工作,因为这些参数位于lenssterktes表中