小编Ela*_*e K的帖子

当变量包含单引号时,SQL动态查询字符串中断

我有一个SQL查询字符串,如下所示:

DECLARE @sql varchar(max)
SET @sql = ' INSERT INTO ' + @tempTable1 + 
           ' SELECT 0 as Type1, 0 as Type2, ' + 
             '''' + @name + ''' as CompanyName ' + 
           ' FROM #tempTable2 tt2'
Run Code Online (Sandbox Code Playgroud)

查询运行正常,除了恰好包含单引号的两个名称(例如:Pete's Corner).当这些名称中的任何一个成为查询的一部分时,它会破坏查询字符串.我认为最简单的方法是替换单引号,如替换(@name,'''',''),但它不起作用,因为我已经在一个字符串中,所以它影响其余的该声明.不幸的是,改变表本身并不是一种选择.

如何更换或删除这些单引号?

另外:我道歉,我没有包含@name实际上是通过连接从另一个数据库表填充的部分,因此在创建字符串之前设置@name的值我认为对我来说很难.

sql sql-server-2005

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

无法将源类型转换为目标类型List <KeyValuePair> Linq

我有一个List<KeyValuePair<int,string>>返回列表的方法; 但是,我收到一个错误:

无法将源类型转换System.Collections.Generic.List<{Key:int, Value:string}>为目标类型 System.Collections.Generic.KeyValuePair<'int,string'>>.

我正在尝试将Linq select语句转换为新列表,但我不明白初始化列表是否存在问题,或者我是如何获取Linq语句中的值的.

这是方法:

public static List<KeyValuePair<int,string>> GetStatus(int status)
{
   List<KeyValuePair<int,string>> st = SelectList.GetStatuses();
   List<KeyValuePair<int,string>> tp;

   switch(status)
   {
      case (int)Status.Completed:
          tp = st.Where(s => s.Key == (int)Status.Completed ||
                             s.Key == (int)Status.NotValid)
                 .Select(s => new { s.Key, s.Value }).ToList();
      case (int)Status.Open:
          tp = st.Where(s => s.Key == (int)Status.Open ||
                             s.Key == (int)Status.Reviewed)
                 .Select(s => new { s.Key, s.Value }).ToList();
      default:
          break;
   }
   return tp;
}
Run Code Online (Sandbox Code Playgroud)

这是填充列表的方法:

public static List<KeyValuePair<int, string>> GetStatuses()
    { …
Run Code Online (Sandbox Code Playgroud)

c# linq

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

带有if语句的where子句

大家好,并提前感谢,我对如何使用where子句与我需要执行的条件语句感到困惑.我有两个信息网格,一个网格依赖于另一个网格来确定什么显示.在第一个网格中,日期字段可以是日期,也可以说是从不.

第一个网格的数据是这样的:

ID       Date     Title
---      -----    ------
12       Never    Home
13       Never    School
14       Never    Work
Run Code Online (Sandbox Code Playgroud)

第二个网格只显示三个中的一行,具体取决于Date字段的值,在本例中它应该是:

ID       Date     Title
---      -----    ------
12       Never    Home 
Run Code Online (Sandbox Code Playgroud)

此信息被拉入我想要使用LINQ迭代的List中.我想要实现的是:

If(All Date values == 'Never') 
    Then pull the first one (12)
else
    if(Date has value)
         then pull the first that has a date

myList.Where(??what goes here??).Select(t => t).FirstOrDefault(); 
Run Code Online (Sandbox Code Playgroud)

c# linq

3
推荐指数
2
解决办法
456
查看次数

LINQ foreach循环中的System.Linq.Enumerable + d__3a`1 [System.String]错误

我有一个列表,我试图从另一个列表中填充,我想要结合一些数据,并消除一些.

在原始列表中,数据如下所示:

 Id     Text      Description

  1      Apple     Red Delicious
  1      Apple     Green
  1      Apple     Granny 
  2      Tomato    Roma
  2      Tomato    Cherry   
Run Code Online (Sandbox Code Playgroud)

我想在第二个列表中压缩此信息,如下所示:

  Id    Text     Description
  1     Apple    Red Delicious, Green, Granny
  2     Tomato   Roma, Cherry 
Run Code Online (Sandbox Code Playgroud)

我的类对象声明如下:

 [Serializable]
 public class Food
 {
     public int Id { get;set; }
     public string Text { get;set; }
     public string Description { get;set; } 
 }
Run Code Online (Sandbox Code Playgroud)

所以我想循环遍历旧列表,这就是我在代码中尝试这样做的方式:

var ids = oldList.Select(i => i.Id).Distinct(); //get distinct list of ids (e.g. 1,2)
List<Food> newList = ids.Select(i => new …
Run Code Online (Sandbox Code Playgroud)

c# linq

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

标签 统计

c# ×3

linq ×3

sql ×1

sql-server-2005 ×1