C# 如何选择LINQ.select中整数的最后一位?
我有一个LINQ select:C# 如何选择LINQ.select中整数的最后一位?,c#,linq,C#,Linq,我有一个LINQ select: var extendedPhrases = phrases .Select(x => new ExtendedPhrase() { Ajlpt = x.Ajlpt, Bjlpt = x.Bjlpt, Created = x.Created // an int? }); 如果我定义: pu
var extendedPhrases = phrases
.Select(x => new ExtendedPhrase()
{
Ajlpt = x.Ajlpt,
Bjlpt = x.Bjlpt,
Created = x.Created // an int?
});
如果我定义:
public int? CreatedLast { get; set; }
那么我如何用x的最后一个数字来填充它呢?首先想到的方法是调用.ToString().last(): 如果您没有使用最新的闪亮C#,则可以通过以下方式实现空保护:
var extendedPhrases = phrases
.Select(x => new ExtendedPhrase()
{
Ajlpt = x.Ajlpt,
Bjlpt = x.Bjlpt,
Created = x.Created,
CreatedLast = x.Created.HasValue ? x.Created.ToString().Last() : null
});
并将一些转换返回到
int?
作为练习留给读者。如果您要查找创建的属性的最后一位,请使用以下命令:
var extendedPhrases = phrases
.Select(x => new ExtendedPhrase()
{
Ajlpt = x.Ajlpt,
Bjlpt = x.Bjlpt,
Created = x.Created,
CreatedLast = x.Created % 10
});
不完全是linq。您的意思是类似于x.Created%10
?答案并不是特定于linq的。如果您的数字(例如x
)已经是int
,并且您对以10为基数的最后一个十进制数字感兴趣,x%10
(模运算)应该给出最后一个数字。您是指列表中的最后一个条目还是创建的的最后一个数字?不清楚。如果需要,请不要忘记将其返回int。也许您应该在回答中说明您对x
和ExtendedPhrase.Created
类型的假设。您似乎假设x.Created
是某种可为空的
。为什么?此外,您似乎假定extendedphase.Created
是一个可为空的。为什么?--长话短说,您试图回答一个缺少关键信息的问题(即所涉及的类型)@stakx基于Created
集合原始问题代码中的注释。@petethepagan沙鼠CreatedLast
也是一个可为空的int
,因此您的代码将按原样失败。如果您假设x.Created
和extendedphase.Created
是int?
,那么你的代码就不起作用了。据我所知,x.Created.ToString().Last()
将计算为键入char
。不能将char
分配给int?
属性。此外,三元运算符的两个子句中的表达式:代码>没有兼容的类型。一个表达式是char
,另一个是空引用(这是char
表达式的无效值)。你的代码无法编译。
var extendedPhrases = phrases
.Select(x => new ExtendedPhrase()
{
Ajlpt = x.Ajlpt,
Bjlpt = x.Bjlpt,
Created = x.Created,
CreatedLast = x.Created % 10
});