我正在VS2010,Framework 4.0,C#和silverlight 4中编写应用程序。
我有一个简单的类和Linq查询。
课程是:
public class pmDues
{
[Key]
public int DuesID { get; set; }
[DataMember]
public string dues_type { get; set; }
public decimal dues_amount { get; set; }
}
在我的DomainService中,我有以下IQueryable:
public IQueryable<pmdues> GetDues()
{
return from dues in ObjectContext.tblDuesRates
orderby dues.due_type
select new pmDues()
{
DuesID = dues.id,
dues_type = dues.due_type,
dues_amount = dues.amount.Value
};
}
到目前为止很好.......但是!
我真正想要的是显示连接的dues_type + dues_amount。 dues_amount在SQL Server表中声明为十进制。我不知道的是在哪里以及如何将dues_type与dues_amount连接起来。我试过以下但是没有用。我应该在课堂上连接吗?如果是这样的话。仍然是C#的新手。
public IQueryable<pmdues> GetDues()
{
return from dues in ObjectContext.tblDuesRates
orderby dues.due_type
select new pmDues()
{
DuesID = dues.id,
dues_type = dues.due_type + " - " +
dues.amount.Value.ToString(),
dues_amount = dues.amount.Value
};
}
由于
答案 0 :(得分:2)
使用SqlFunctions.StringConvert
,这可以在EF6 //DRAG CONDITIONS
counterForDropped = $("#left-panel").find('.draggable').length;
$("#drag-1").draggable({
containment: '.zone-container',
snap: '#drag-1',
revert: 'invalid'
});
$("#drag-2").draggable({
containment: '.zone-container',
snap: '#drag-2',
revert: 'invalid'
});
$("#drag-3").draggable({
containment: '.zone-container',
snap: '#drag-3',
revert: 'invalid'
});
//DROP & ACTION
$("#drop-1").droppable({
accept: "#drag-1",
drop: function (event, ui) {
counterForDropped--;
checkLastDrop();
}
});
$("#drop-2").droppable({
accept: "#drag-2",
drop: function (event, ui) {
counterForDropped--;
checkLastDrop();
}
});
$("#drop-3").droppable({
accept: "#drag-3",
drop: function (event, ui) {
counterForDropped--;
checkLastDrop();
}
});
function checkLastDrop() {
if (counterForDropped === 0) {
alert('last dropped');
}
}
中找到(以前版本中为System.Data.Entity.SqlServer
),以便将System.Data.Objects.SqlClient
转换为decimal
:< / p>
string
答案 1 :(得分:1)
有SqlFunctions类,它具有实用方法,以特殊方式处理,同时将表达式树转换为sql查询,以及为什么在db级别调用,但它仅适用于实体框架&gt; 4(如果我没有弄错的话)。
但是你可以在.NET端连接你的值。只需使用AsEnumerable
进行此类操作即可。
public IEnumerable<pmdues> GetDues()
{
var pmDues =
from dues in ObjectContext.tblDuesRates
orderby dues.due_type
select new
{
DuesID = dues.id,
dues_type = dues.due_type,
dues_amount = dues.amount.Value
};
return pmDues
.AsEnumerable()
.Select(d =>
new pmDues()
{
DuesID = d.DuesID,
DuesType = d.dues_type + " - " +
d.dues_amount.ToString()
});
}
但您无法返回IQueryable
,从而在db级别执行过滤或排序。
如果调用GetDues
的上层代码确实应该执行此类操作,
您可以为方法提供Func<IQueryable<pmdues>, IQueryable<pmdues>>
类型的其他参数,并在AsEnumerable
之前调用它。
答案 2 :(得分:0)
尝试删除.ToString()
public IQueryable<pmdues> GetDues()
return from dues in ObjectContext.tblDuesRates
orderby dues.due_type
select new pmDues()
{
DuesID = dues.id,
dues_type = dues.due_type + " - " +
dues.amount.Value,
dues_amount = dues.amount.Value
};
}
答案 3 :(得分:0)
在这里做出一个假设,但请试一试,看看它是否适合你。
public IQueryable<pmdues> GetDues()
{
return (from dues in ObjectContext.tblDuesRates
orderby dues.due_type).ToList().
Select(x => new pmDues
{
DuesID = x.id,
dues_type = string.Format("{0} - {1}",
x.due_type,
x.amount),
dues_amount = x.amount.Value
}).AsQueryable();
}
答案 4 :(得分:0)
这里有什么问题?您始终可以使用字符串连接:String.Concat(a, b, c.ToString())
或a + b + c.ToString()
,并将此值写入字符串&#39; dues_type
&#39; 。这有什么问题?