我是VB.NET的新手,我在这里遇到一些麻烦,我觉得应该很简单.
保持简单,假设我有一个带有"Name"的Document表,我想搜索(实际上还有其他几个表,连接等等).我需要能够使用where基于传入的字符串值的子句构建查询.
示例 - 用户可以传入"ABC","ABC DEF","ABC DEF GHI".
最后的查询是(语法不正确,我知道):
Select * from Documents Where Name Like %ABC% AND Name Like %DEF% AND Name like %GHI%
Run Code Online (Sandbox Code Playgroud)
所以,我以为我可以这样做.
Dim query = From document In _context.Documents
<< loop based on number of strings passed in >>
query = query.Where( ... what goes here?? )
Run Code Online (Sandbox Code Playgroud)
出于某种原因,脑死亡或其他什么,我无法弄清楚如何在VB.NET中完成这项工作,或者我是否正确地做到了.
更多一个奇怪的问题我似乎无法迅速找到一个明确的答案.
在SQL Server 2008中,视图中允许的列数是否有最大限制?从MSDN文章(下面)我看到每个Select语句有4096列的限制.这会被应用于视图吗?
例:
CREATE VIEW [dbo].[TestView]
AS
SELECT Column1, Column2 FROM dbo.SomeTableName
Run Code Online (Sandbox Code Playgroud)
在此视图中,我会限制为4096列吗?
Linq还有点新鲜.这让我疯了.我想别名一个列,别名应该有一个空格.
这很好用:
Dim q = From tmp in t.Table Select iDate = tmp.iDate
Run Code Online (Sandbox Code Playgroud)
但是,我想要这个工作
Dim q = From tmp in t.Table Select "Some Alias With Space" = tmp.iDate
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我正在尝试使用与默认.Net文化(SFr.)不同的符号(CHF)来格式化货币(Swiss Frank - de-CH).问题是文化的NumberFormat是ReadOnly.
有没有一种简单的方法可以使用CultureInfo和NumberFormat来解决这个问题?有什么方法可以覆盖CurrencySymbol吗?
例:
Dim newCInfo As CultureInfo = CultureInfo.GetCultureInfo(2055)
newCInfo.NumberFormat.CurrencySymbol = "CHF"
MyCurrencyText.Text = x.ToString("c",newCInfo)
Run Code Online (Sandbox Code Playgroud)
设置NumberFormat.CurrencySymbol因为这NumberFormat是错误**ReadOnly**.
谢谢!
假设我有计划和文件
Dim myPlans = _context.Plans.Where(predicate1)
Dim myDocuments = _context.Documents.Where(predicate2)
Run Code Online (Sandbox Code Playgroud)
我使用PredicateBuilder为每个子句构造了where子句.因此,myPlans和myDocuments具有正确的SQL语句.
我想做的是将这两个表连接成一个linq语句.我遇到的问题是,默认情况下AND条件是加入where子句.
myPlans Where子句:( p.name喜欢"%test%"和p.name喜欢"%bed%")或(p.description喜欢"%test%"和p.description喜欢"%bed%")
myDocuments Where子句:( d.name喜欢"%test%"和d.name喜欢"%bed%")或(d.描述如"%test%"和d.description如"%bed%")
当我将两个结合起来时,期望的结果Where子句是:
Where(d.ID = p.ID)AND(上面的myplans where子句)OR(上面的mydocument where子句).意思是,我希望每个表中的两个where子句是"或"而不是"And".
当前结果where子句是:Where(d.ID = p.ID)AND(上面的myplans where子句)AND(上面的mydocument where子句).意思是,我希望每个表中的两个where子句是"或"而不是"And".
我正在形成这样的声明:
Dim test = From d in myDocuments _
Join p in MyPlans on d.ID Equals p.ID _
Select d.Name, p.Name
Run Code Online (Sandbox Code Playgroud) 我有一个案例,我需要根据表中的设置和序数集只显示顶行.
下面的示例数据集显示了两个客户; 每个客户都有不同的产品.因为NumRowsToShow是"1"我只想为每个客户显示一行(基于序数的顶行).
| CustomerID | ProductID | Ordinal | NumRowsToShow |
+------------+-----------+---------+---------------+
| 1 |A |1 |1 |
| 1 |B |2 |1 |
| 1 |C |3 |1 |
| 5 |D |1 |1 |
| 5 |E |2 |1 |
| 5 |F |3 |1 |
Run Code Online (Sandbox Code Playgroud)
运行查询后的结果集应该是
| CustomerID | ProductID |
+------------+-----------+
| 1 |A |
| 5 |D |
Run Code Online (Sandbox Code Playgroud)
在同一场景中,如果NumRowsToShow对于customerID 1为1,对于CustomerID 5为2,我会看到类似的东西.
| CustomerID | ProductID | Ordinal | NumRowsToShow | …Run Code Online (Sandbox Code Playgroud) linq ×2
linq-to-sql ×2
vb.net ×2
.net ×1
cultureinfo ×1
sql-server ×1
t-sql ×1
where ×1
where-clause ×1