linq 当结果视图中没有记录时,Count()返回1个结果

rur96b6h  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(187)
var user = await context.Customers
                .Include(x => x.CustomerPreferences)
                .ThenInclude(up => up.CustomerNations)
                .Where(x => x.Id == userId).FirstOrDefaultAsync(cancellationToken);

客户国家实体具有

public Customer Customer { get; set; } = null!;
public virtual IList<CustomerNation> CustomerNations { get; set; } = new List<CustomerNation>();

我在CustomerNation表中没有记录,但是根据此代码,CustomerNations中有一条记录,当我在调试过程中观察时,Result视图显示0个结果。

var preferences= user.preferences
                .ToList();

if (preferences.Any())
{
    var customerNations= user.CustomerPreferences
        .Select(x => x.CustomerNations);

    if (customerNations.Count() != 0) //Both, Any() and Count shows there is one record. I check dropdown and Result view has 0 results.
    {
        foreach (var nation in customerNations)
        {
            context.Remove(counterParty);
        }
    }
}

计数为1,但结果视图显示

不同

3qpi33ja

3qpi33ja1#

Enumerable.Select<TSource,TResult>返回IEnumerable<TResult>。在本例中,由于CustomerPreferences.CustomerNations的类型为IList<CustomerNation>,因此user.CustomerPreferences.Select(x => x.CustomerNations)返回的是IEnumerable<IList<CustomerNation>>。因此,您的customerNations可能有一个项目本身为空IList<CustomerNation>
如果你想把所有的CustomerNation示例扁平化成一个IEnumerable<CustomerNation>,你应该使用Enumerable.SelectMany
x1米11米1x

相关问题