我有1个界面:
public interface ISummary
{
int EventId {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
许多实现此接口的具体类:
public class EmployeeSummary : ISummary
{
public int EventId {get; set;},
public int TotalUniqueCount {get; set;}
public int Location {get; set;}
}
public class CarSummary : ISummary
{
public int EventId {get; set;}
public int TotalMiles {get; set;}
public int TotalHours {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
等等....
唯一的共享属性是EventId.有没有办法让1个工厂方法创建所有这些摘要对象?我想要1个入口点来决定要创建哪些对象.
所以类似于:
public ISummary CreateSummary(ConcreteObjectType with properties)
{
if EmployeeSummary
--Call this method to create and return EmployeeSummary
if CarSummary …Run Code Online (Sandbox Code Playgroud) 我有2个清单.首先是具有int属性ID的对象列表.另一个是整数列表.
我需要比较这两个列表并将对象复制到一个新列表,其中只有基于ID的两个列表之间匹配的对象.现在我使用2个foreach循环如下:
var matched = new list<Cars>();
foreach(var car in cars)
foreach(var i in intList)
{
if (car.id == i)
matched.Add(car);
}
Run Code Online (Sandbox Code Playgroud)
这看起来很慢,因为它多次迭代每个列表.有没有办法这样做而不使用像这样的2个foreach循环?
我想知道是否有可能加入greates值.
所以举个例子
SELECT *
FROM Vehicle v
INNER JOIN VehicleCost vc ON v.VehicleWeight > vc.WeightFrom AND c.VehicleWeight < vc.WeightTo
Run Code Online (Sandbox Code Playgroud)
但是如果v.VehicleWeightTotal> v.VehicleWeight我想要在内连接上替换v.VehicleWeight.因此,这可能是每辆车的不同连接.
我如何在加入中进行检查?
样品:
tblVehicle
VehicleId VehicleWeight VehicleWeightTotal
1 12 15
2 1 8
3 16 20
tblVehicleCost
WeightFrom WeightTo Dollars
0 5 1
6 11 8
12 16 9
17 20 15
Run Code Online (Sandbox Code Playgroud)
所以:
Vehicle 1 = 9
Vehicle 2 = 8
Vehicle 3 = 15
Run Code Online (Sandbox Code Playgroud) 我有一个包含日期的表,表中可以有多个日期.例如
Date
'2011-01-01'
'2011-03-01'
'2011-06-01'
'2011-11-01'
'2011-12-01'
Run Code Online (Sandbox Code Playgroud)
我还有一张表中只有单位.永远不会有重复的单位.
Unit
1
2
3
4
5
6
Run Code Online (Sandbox Code Playgroud)
如何返回每个单元的所有日期.例如:
Unit Date
1 '2011-01-01'
1 '2011-03-01'
1 '2011-06-01'
1 '2011-11-01'
1 '2011-12-01'
2 '2011-01-01'
2 '2011-03-01'
2 '2011-06-01'
2 '2011-11-01'
2 '2011-12-01'
Run Code Online (Sandbox Code Playgroud)
等等.....
我有以下查询:
SELECT
'' + CONVERT(VARCHAR(MAX),c.ClientId) + ','
FROM [dbo].[tblClient] c
Run Code Online (Sandbox Code Playgroud)
这将返回17,000 +行.有没有办法让所有这些行返回1值?例如:
6A7A24CD-061C-4653-9790-882D90F81E1D,0980722E-6E96-4498-B3BB-BFB4CA60EAC6,etc etc etc.
Run Code Online (Sandbox Code Playgroud)
我试图用它作为测试参数.
我经常在SQL中创建临时表,我正在研究一种为表定义自动生成列名和数据类型的方法,因此我不必每次都查看它们.
比如我运行:
SELECT CustomerID
ClientID,
FirstName
LastName
INTO #Test
From dbo.Customer
Run Code Online (Sandbox Code Playgroud)
最初使用我需要的相应列和数据设置临时表.一旦我完成所有这些,我就回去并取出INTO语句并写下以下内容:
CREATE TABLE #Test
(
...
...
);
Run Code Online (Sandbox Code Playgroud)
我想找到一种方法来自初始创建临时表自动生成列名和数据类型.现在,因为我最初插入自动创建的临时表,我使用这个:
EXEC tempdb..sp_help '#Test';
Run Code Online (Sandbox Code Playgroud)
这给了我所需的一切,而不必查看所有的列数据类型,但我想知道是否有一种方法可以自动生成列名这样的东西.所以auto gen会产生:
CustomerID int,
ClientID int,
FirstName varchar(50),
LastName varchar(50)
Run Code Online (Sandbox Code Playgroud)
这将允许我将其复制并粘贴到我的create table语句中.
我有以下表格标题:
<table id="time" class="new_table" border="0" cellpadding="2">
<thead>
<tr>
<th scope="col" rowspan="2" class="sortHead">
<a href="#" id="unitSort">Unit</a>
</th>
<th colspan="2" id="startDateHead" class="sortHead">
<a href="#" id="startDateSort">Start</a>
</th>
<th colspan="2" id="endDateHead" class="sortHead">
<a href="#" id="endDateSort">End</a>
</th>
<th rowspan="2" class="sortHead">
<a href="#" id="distanceSort">Distance (miles)</a>
</th>
<th rowspan="2" class="sortHead">
<a href="#" id="locationSort">Location</a>
</th>
<th rowspan="2" class="sortHead">
<a href="#" id="driverName">Driver Name</a>
</th>
</tr>
Run Code Online (Sandbox Code Playgroud)
我在用户点击按钮时动态添加和删除img标签.当它们在那里时,如何删除该表的a标签中的所有img标签?
我试过了:
$('#time th a').each(function() { $(this).remove('img'); });
Run Code Online (Sandbox Code Playgroud)
添加到标记的img元素的示例如下:
<a href="#" id="driverName">Driver Name<img id="test" src="test.png" width="10"></a>
Run Code Online (Sandbox Code Playgroud) 我的案例陈述如下:
CASE id
WHEN '9FDAC41CBF5ED6E3758' THEN 'Invalid'
WHEN '5EBF056B16E7593' THEN 'Invalid'
WHEN 'EEDC43399D10F44A19E293BB' THEN 'Invalid'
WHEN '2322' THEN 'No'
ELSE 'Yes'
END AS [Test]
Run Code Online (Sandbox Code Playgroud)
是否可以将3 when子句放在1 when子句中,因为它们基本上返回相同的值?
我有2个临时表,我用数字值填充:
CREATE TABLE #Initial
(
[SalesTax] NUMERIC (20,4),
[Unit] VARCHAR(10)
);
INSERT INTO #Initial ([SalesTax],[Unit])
(
SELECT SUM(SalesTax), Unit
FROM Billing
GROUP BY Unit
);
CREATE TABLE #End
(
[SalesTax] NUMERIC (20,4),
[Unit] VARCHAR(10)
);
INSERT INTO #End([SalesTax],[Unit])
(
SELECT SUM(SalesTax), Unit
FROM BillingEnd
GROUP BY Unit
);
Run Code Online (Sandbox Code Playgroud)
然后,当我在另一个查询中选择它们时,我试图将这些值一起添加(此查询是一个非常简单的更大查询示例.必须像这样完成):
SELECT
u.Unit,
i.SalesTax,
e.SalesTax,
(i.SalesTax+ e.SalesTax) AS SalesTaxFeeTotal
FROM tblUnit u
LEFT JOIN #Initial i ON u.Unit = i.Unit
LEFT JOIN #End e ON u.Unit = e.Unit
Run Code Online (Sandbox Code Playgroud)
出于某种原因,当i.SalesTax和e.SalesTax列返回这些相同记录的值时,SalesTax列将返回NULL.
任一临时表中都没有NULL值.如果没有费用,则为0.00
为什么这些重新调整的空值?
我有一个包含日期和NULL值的日期列表.我试图找出一种方法来找到MAX Date,per ID,或者如果有NULL值,则返回NULL.
例如:
ID Date
1 2014-01-01
1 2014-02-01
1 2014-03-01
2 2014-02-01
2 NULL
3 NULL
4 2014-03-01
Run Code Online (Sandbox Code Playgroud)
所以我想要产生的是:
1 = 2014-03-01
2 = NULL
3 = NULL
4 = 2014-03-01
Run Code Online (Sandbox Code Playgroud)
截至目前我正在使用这样的东西:
NULLIF(MAX(COALESCE(n.[SentDate], '12/16/9997')),'12/16/9997') AS [MaxSentDate]
Run Code Online (Sandbox Code Playgroud)
我99%肯定没有人会约会12/16/9997,但我想提出一个合适的解决方案,而不是使用像这样的hackish.