有没有人有使用PLINQ和ASP.NET的经验?这是一个很好的组合,还是在大多数情况下要避免的事情?
我为一个lawfirm(约100个用户)开发了一个Intranet ASP.NET站点.有几个页面包含非平凡的LINQ代码,例如,我们有一个银行rec页面,它使用LINQ to Datasets比较我们的会计数据库和银行数据之间的数千个金融交易.这很慢,所以我很想尝试PLINQ,但我担心这会导致1个请求垄断Web服务器.使银行rec运行速度提高4倍,但在运行时关闭所有其他用户并不会有所改善.
我知道有比LINQ更快的解决方案,但我宁愿用短代码来维护.
现在,我们有一台Dual Pentium 4网络服务器,但我希望我们能在不久的将来升级到不错的硬件.
有没有人知道如何在SQL Server CE数据库中存储图像?
该列应该是什么数据类型?(我猜二进制.)
我使用Linq-To-Datasets.有可能使用它将图像放入数据库并在以后再次将其拉出来吗?
谢谢你的建议.
我是这样做的:
MemoryStream stream = new MemoryStream();
myBitmapImage.Save(stream, ImageFormat.Png);
myInsertLinqToDataSetRow.IMAGE_COLUMN = stream.ToArray();
Run Code Online (Sandbox Code Playgroud)
要重新加载它我做了这个:
MemoryStream stream = new MemoryStream(myLinqToDataSetRow.IMAGE_COLUMN);
myBitmapImage.SignatureImage = new Bitmap(stream);
Run Code Online (Sandbox Code Playgroud)
我在MSDN上找到一个页面,表示Image列类型正在消失,你应该使用varbinary(MAX).SQL Server CE不支持Max,所以我做了varbinary(8000).
稍后注意:虽然SQL Server CE不支持varbinary(max).Varbinary(8000)对于许多图像来说都不够大.我确实最终使用了Image类型,即使它计划被弃用.一旦ms在移动平台上提供合理的交替,我将考虑切换.
c# compact-framework windows-mobile linq-to-dataset sql-server-ce
我有一个方法,确定一个列的最小和最大DataTable
:
public void GetMinMaxRange( DataTable data, string valueColumnName )
{
var min = data.AsEnumerable().Min(m => m.Field<double>(valueColumnName));
var max = data.AsEnumerable().Max(m => m.Field<double>(valueColumnName));
}
Run Code Online (Sandbox Code Playgroud)
我想重构这个:
public void GetMinMaxRange( DataTable data, string valueColumnName )
{
DataColumn column = data.Columns[valueColumnName];
var min = data.AsEnumerable().Min(m => m.Field<column.DataType>(valueColumnName));
var max = data.AsEnumerable().Max(m => m.Field<column.DataType>(valueColumnName));
}
Run Code Online (Sandbox Code Playgroud)
我需要确定数据类型并使用它而不是硬编码m.Field<double>
.这该怎么做?
更新 至于我为什么要计算最小值和最大值之间的差异
public static double/decimal/int GetMinMaxRange<T>(DataTable data,
string valueColumnName) where T : IComparable<T>
{
DataColumn column = data.Columns[valueColumnName];
var min = data.AsEnumerable().Min(m => …
Run Code Online (Sandbox Code Playgroud) 我想做这样的事情:
DataTable q = from c in customers
join o in orders on c.Key equals o.Key
into outer
from j in outer.DefaultIfEmpty()
select new { c.*, j.* };
Run Code Online (Sandbox Code Playgroud)
我目前最接近的是以下内容:
var q = from c in customers
join o in orders on c.Key equals o.Key
into outer
from j in outer.DefaultIfEmpty()
select new { c, j };
Run Code Online (Sandbox Code Playgroud)
我希望我的结果(q)包含c和j中的所有列.c和j都包含很多列,所以我宁愿不列出它们:
select new { c.col1, c.col2, etc. }
Run Code Online (Sandbox Code Playgroud)
但我基本上希望最终的DataTable由c.*和j.*组成.
如果我在'select new'中指定所有c和j列,那么这个答案(不是接受的答案,而是它下面的答案)是有效的: 如何将LINQ结果转换为DATATABLE? 但我想避免列出所有内容.
我正在使用Linq到DataTable.如何在where子句中应用like运算符.我想像数据中的运算符一样搜索数据.
我搜索并尝试了以下代码,但得到了一个错误:方法'Boolean Like(System.String,System.String)'不能在客户端上使用; 它仅用于转换为SQL.
var details = from addresses in dt.AsEnumerable()
where SqlMethods.Like(prefixText, prefixText + "%") || SqlMethods.Like(prefixText, "%" + prefixText + "%")
select (string) addresses["Details"];
return details.ToArray();
Run Code Online (Sandbox Code Playgroud) 我正在写一个asp.net C#
Web应用程序; 我有一个名为' table1
'有三列' country
',' productId
'和' productQuantity
' 的内存数据表; 我想转动该表以获得一个新表(假设' table2
')将第一列' country
'作为固定列,动态数字和列' product_1
',' product_2
',...,' product_n
'的名称根据' table1
'中存在的产品总数; 第一列' country
'必须包含国家/地区名称; 动态生成的列' product_1
',' product_2
',...,' product_n
'必须包含productQuantity
已为指定国家/地区的每个特定产品选择的列
我正在使用Linq查询表达式来编写代码; 问题是我不能硬编码名称和产品的价值; 我无法预测数据表中存在多少产品; 现在,我正在使用以下表达式测试结果:
var query = table1.AsEnumerable()
.GroupBy(c => c.country)
.Select(g => new
{
country = g.Key,
product_1 = g.Where(c => c.productId == "a30-m").Select(c => c.productQuantity).FirstOrDefault(),
product_2 = g.Where(c => c.productId == "q29-s").Select(c => c.productQuantity).FirstOrDefault(),
.
.
.
product_n = g.Where(c …
Run Code Online (Sandbox Code Playgroud) 如何在可空列上加入表?
我有以下 LINQ 查询,RMA.fiCharge
可以为 NULL:
Dim query = From charge In Services.dsERP.ERP_Charge _
Join rma In Services.dsRMA.RMA _
On charge.idCharge Equals rma.fiCharge _
Where rma.IMEI = imei
Select charge.idCharge
Run Code Online (Sandbox Code Playgroud)
我在以下位置收到“从'DBNull'类型转换为'Integer'类型无效” query.ToArray()
:
Dim filter = _
String.Format(Services.dsERP.ERP_Charge.idChargeColumn.ColumnName & " IN({0})", String.Join(",", query.ToArray))
Run Code Online (Sandbox Code Playgroud)
所以我可以WHERE RMA.fiCharge IS NOT NULL
在查询中附加一个。但是如何在 LINQ 中做到这一点,或者还有其他选择吗?
先感谢您。
解决方案:
问题是 DataSet 不支持 Nullable-Types,但如果您在整数列上查询任何 NULL 值,则会生成 InvalidCastException(感谢 Martinho)。来自 dahlbyk 的修改后的 LINQ 查询只需稍加修改即可工作。DataSet 为每个具有 AllowDbNull=True 的列生成一个布尔属性,在本例中为IsfiChargeNull
。
Dim query = From charge In Services.dsERP.ERP_Charge _ …
Run Code Online (Sandbox Code Playgroud) LINQ到LIN的数据集子集是EF还是这两个是独立的?
LINQ让我疯狂.为什么以下查询不返回重复项,而它只使用一个标识符?我的错误在哪里?
' generate some test-data '
Dim source As New DataTable
source.Columns.Add(New DataColumn("RowNumber", GetType(Int32)))
source.Columns.Add(New DataColumn("Value1", GetType(Int32)))
source.Columns.Add(New DataColumn("Value2", GetType(Int32)))
source.Columns.Add(New DataColumn("Text", GetType(String)))
Dim rnd As New Random()
For i As Int32 = 1 To 100
Dim newRow = source.NewRow
Dim value = rnd.Next(1, 20)
newRow("RowNumber") = i
newRow("Value1") = value
newRow("Value2") = (value + 1)
newRow("Text") = String.Format("RowNumber{0}-Text", i)
source.Rows.Add(newRow)
Next
' following query does not work, it always has Count=0 '
' although it works with only one …
Run Code Online (Sandbox Code Playgroud) 所以我有两个具有相同模式但数据不同的DataTable.我想将两个表连接在一起,其中两个字段,id3和print相同.我如何在LINQ中写这个?
现在,这工作并没有给出编译器错误:
var singOneJoin =
from prod in singOneProd.Table.AsEnumerable()
join agg in singOneAgg.Table.AsEnumerable()
on prod.Field<string>("print") equals agg.Field<string>("print")
select new
{
print = prod.Field<string>("print")
};
Run Code Online (Sandbox Code Playgroud)
但我真正想要的是:
var singOneJoin =
from prod in singOneProd.Table.AsEnumerable()
join agg in singOneAgg.Table.AsEnumerable()
on (prod.Field<string>("print") equals agg.Field<string>("print") &&
prod.Field<Int32>("id3") equals agg.Field<Int32><("id3"))
select new
{
print = prod.Field<string>("print")
};
Run Code Online (Sandbox Code Playgroud)
但这给了我编译错误.
如何在print和id3列上将这两个表连接在一起?
问候,
凯尔
linq-to-dataset ×10
linq ×8
c# ×6
.net ×2
asp.net ×2
vb.net ×2
datatable ×1
generics ×1
join ×1
over-clause ×1