当前位置: 首页 > 面试题库 >

LINQ to SQL C#粗疏

杜禄
2023-03-14
问题内容

给出下表:

Length | Width | Color | ID
===========================
    18 |    18 |  blue |  1
---------------------------
    12 |    12 |   red |  1
---------------------------

我想产生一个单列/行:

 SIZES
 =================
 18 x 18, 12 x 12,

我可以在SQL中执行以下操作:

DECLARE @SIZES VARCHAR(8000)
SELECT @SIZES = COALESCE(@SIZES, '') + Convert(varchar(80), [Length]) + ' x ' + 
                Convert(varchar(80), [Width]) + ', '
FROM table
where ID = 1
GROUP BY [Length], [Width]
ORDER BY [Length], [Width]
SELECT SIZES = @SIZES

但是我不知道如何在LINQ中做到这一点。

我最接近的是:

from t in table
where id == 1
group t by new {
                 t.Length,
                 t.Width
               } into g
orderby g.Key.Length, g.Key.Width
select new {
             SIZES = (Convert.ToInt32(g.Key.Length) + " x " +
                      Convert.ToInt32(g.Key.Width) + ", ")
           }

产生一列两行:

SIZES
========
18 x 18,
12 X 12,

转换对于这个问题并不重要。尽管所有列都是整数,但这些列被定义为浮点数。关键是COALESCE函数,我无法弄清楚如何在LINQ中做到这一点。


问题答案:

我不认为LINQ to SQL支持此T-SQL技巧。COALESCE并不是真正的问题(正如Mehrdad指出的,C#中的等效项是??)-这是SQL
Server通过字符串连接将每个结果聚合到变量@SIZES中的事实。AFAIK LINQ to SQL无法构造这种类型的查询。

这将产生您想要的结果,但是字符串连接是在您这一边执行的,而不是在SQL Server方面执行的。那可能没关系。

var query = 
    from t in table
    where id == 1
    group t by new {
                 t.Length,
                 t.Width
               } into g
    orderby g.Key.Length, g.Key.Width
    select new {
             SIZES = (Convert.ToInt32(g.Key.Length) + " x " +
                      Convert.ToInt32(g.Key.Width) + ", ")
           };

var result = string.Join(string.Empty, query.Select(r => r.SIZES).ToArray());


 类似资料:
  • $format = new \Vtiful\Kernel\Format($fileHandle); $boldStyle = $format->bold()->toResource();

  • 问题内容: 我试着做 但这并没有使它大胆。它只是看起来间隔开了。 那是错误的方式吗? 问题答案: 您将问题标记为已接受,但评论指出该问题无效。我同意它不起作用。 不是字体。它是字体的属性。如果要更改字体,可以执行以下操作: 我添加斜体只是为了向您展示代码的工作原理,因为在我看来,在Metal LAF中,默认设置是粗体。

  • 问题内容: 如何使用CSS选择器加粗句子的第一个单词,就浏览器的可比性而言,这是一种好/坏方法吗? 码: 谢谢 问题答案: CSS中没有伪元素。您必须将第一个单词包装在一个额外的元素中,然后选择该元素。

  • 问题内容: 在其中,可以使轴标签的文本为粗体 您也可以在正确的后端使用LaTeX 但是,当您将它们合并时,数学文本不再是粗体 以下LaTeX命令似乎也没有任何作用 如何在轴标签上加粗? 问题答案: 不幸的是,您不能使用加粗字体来加粗符号,请在tex.stackexchange上查看此问题。 如答案所示,您可以使用粗体phi: 您需要加载到TeX序言中:

  • 问题内容: 如何通过python Web抓取框架Scrapy利用代理支持? 问题答案: 从Scrapy常见问题解答中, Scrapy是否可以与HTTP代理一起使用? 是。(自Scrapy 0.8起)通过HTTP代理下载器中间件提供对HTTP代理的支持。请参阅。 使用代理的最简单方法是设置环境变量。如何完成此操作取决于您的外壳。 如果您想使用https代理并访问https web,要设置环境变量,请

  • 嗨,我正在用ajax做一个CRUD,我对提交的商店评论有问题。我有一个错误: 查询连接中的异常。php第655行:SQLSTATE[23000]:完整性约束冲突:1048列“user_id”不能为空(SQL:insert-in(,,,,)值(我的评论,2016-06-20 10:37:57,2016-06-20 10:37:57)) 我试图用文本“我的评论”存储评论。我的输入“内容”传递给我的控制