小编sug*_*rum的帖子

如何使用VB.NET和LINQ附加'where'子句?

我是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中完成这项工作,或者我是否正确地做到了.

linq vb.net where-clause

28
推荐指数
3
解决办法
9万
查看次数

SQL Server 2008 View中允许的最大列数是多少?

更多一个奇怪的问题我似乎无法迅速找到一个明确的答案.

在SQL Server 2008中,视图中允许的列数是否有最大限制?从MSDN文章(下面)我看到每个Select语句有4096列的限制.这会被应用于视图吗?

例:

CREATE VIEW [dbo].[TestView]
AS
SELECT     Column1, Column2 FROM dbo.SomeTableName
Run Code Online (Sandbox Code Playgroud)

在此视图中,我会限制为4096列吗?

http://msdn.microsoft.com/en-us/library/ms143432.aspx

sql-server-2008

16
推荐指数
3
解决办法
4万
查看次数

LINQ to SQL和列别名与空格

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)

有任何想法吗?

linq-to-sql

9
推荐指数
1
解决办法
2万
查看次数

如何在Readonly CultureInfo.NumberFormat上设置CurrencySymbol?

我正在尝试使用与默认.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**.

谢谢!

.net cultureinfo number-formatting

9
推荐指数
1
解决办法
4950
查看次数

LINQ to SQL并使用OR子句连接两个表

假设我有计划和文件

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)

linq vb.net where linq-to-sql

5
推荐指数
1
解决办法
1万
查看次数

根据序数和属性数据选择前n个记录

我有一个案例,我需要根据表中的设置和序数集只显示顶行.

下面的示例数据集显示了两个客户; 每个客户都有不同的产品.因为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)

t-sql sql-server sql-server-2008

1
推荐指数
1
解决办法
565
查看次数