我有一个奇怪的分组方案,并找到一些麻烦找出什么是在SQL中分组的最佳方式.
想象一下,我们有以下一个表
CREATE TABLE Item
(
KeyId VARCHAR(1) NOT NULL,
Col1 INT NULL,
Col2 INT NULL,
Col3 INT NULL
)
GO
INSERT INTO Item (KeyId, Col1, Col2, Col3)
VALUES
('a',1,2,3),
('b',5,4,3),
('c',5,7,6),
('d',8,7,9),
('e',11,10,9),
('f',11,12,13),
('g',20,22,21),
('h',23,22,24)
Run Code Online (Sandbox Code Playgroud)
我需要在此表中对记录进行分组,以便如果两个记录的Col1 OR Col2或Col3相同,则这两个记录应该在同一个组中,并且应该存在链接.换句话说,如上述数据记录'a'(第一个记录)有Col3 = 3而记录'b'(第二个记录)也有Col3 = 3,所以这两个应该在一个组中.但是记录'b'与记录'c'具有相同的Col1,因此记录'c'应该与'a'和'b'在同一组中.然后记录'd'与'c'中的Col2相同,因此这也应该在同一组中.类似地,'e'和'f'分别在Col3和Col1中具有相同的值.
另一方面,记录'g'和'h'将在一个组中(因为它们具有相同的Col2 = 22),但是该组将与记录'a','b','c'的组不同, 'd', 'E', 'F'.
查询的结果应该是这样的
KeyId GroupId
'a' 1
'b' 1
'c' 1
'd' 1
'e' 1
'f' 1
'g' 2
'h' 2
Run Code Online (Sandbox Code Playgroud)
可能有一种方法可以使用一些循环/游标,但我开始考虑更清洁的方式,这似乎很难.
是否可以从存储在Core数据库中的MediaLibrary访问图像.
我使用以下代码从Core数据库获取项目URL:Sitecore.Resources.Media.MediaManager.GetMediaUrl(mediaItem)
但是当我尝试使用该URL设置图像src值时,它会显示:找不到资源.
请在投票结束前仔细阅读该问题.这不是重复的.
我正在尝试构建一个泛型方法,返回类型为T的实体列表,这些实体连接到AuditLog类型的日志.这是我使用的LINQ中的LEFT JOIN解释
var result = from entity in entitySet
from auditLog in auditLogSet.Where(joinExpression).DefaultIfEmpty()
select new { entity, auditLog };
return result.GroupBy(item => item.entity)
.Select(group => new
{
Entity = group.Key,
Logs = group.Where(i => i.auditLog != null).Select(i => i.auditLog)
});
Run Code Online (Sandbox Code Playgroud)
问题出在joinExpression中.我想将它传递给WHERE子句,但它对于不同的具体类型T(它依赖于实体变量)是不同的,例如对于特定实体它可能是
joinExpression = l => l.TableName == "SomeTable" && l.EntityId == entity.SomeTableId;
Run Code Online (Sandbox Code Playgroud)
注意上面的entity.SomeTableId.这就是我无法在查询开始之前初始化joinExpression的原因.如果它实际上依赖于"entity"变量(它是查询本身的一部分),我如何将joinExpression作为参数传递?
我有125*25黑白.png图片.我想读黑色像素.用于LED显示屏.我能怎么做?在c#中.
for (int i = 0; i < image.Height ; i++)
{
for (int j = 0; j < image.Width ; j++)
{
Color c = image.GetPixel(j, i); //
x = c.R ;
Run Code Online (Sandbox Code Playgroud)
我可以读红色像素,但我只想要黑色像素.