Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何选择LINQ.select中整数的最后一位?_C#_Linq - Fatal编程技术网

C# 如何选择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

我有一个LINQ select:

 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
        });