将 In 子句与 linq

问题描述

这是我尝试过的查询,但即将出现上述错误。 b 是逗号分隔的列表。图像显示了 b 的输出

var CheckInHand = from item in PaymentList
                  where item.Id.In(b)          
                  select item.TotalAmt;

[图像是逗号分隔的列表,即 b] [1]:https://i.stack.imgur.com/Y39bd.png

解决方法

需要明确的是,In 需要一个 string[],而您正试图传递 b,它是一个 string

您可以使用 String.Split 将逗号分隔的 string 转换为 string[]

var CheckInHand = from item in PaymentList
                  where item.Id.In(b.Split(',',StringSplitOptions.RemoveEmptyEntries))
                  select item.TotalAmt;
,

除了@dakota-methvin 之外,这可能也是相关的。

        [Fact]
        public void AssertItem()
        {
            var b = new int[] {311,306,299,303,304,302,301,291,281};
            var PaymentList = new Payment[] {new Payment() {Id = 311,TotalAmt = 500}};
            var CheckInHand = from item in PaymentList
                where b.Contains(item.Id)
                select item.TotalAmt.ToString("$##.00");
            Assert.Equal("$500.00",CheckInHand.First());
        }

        public class Payment
        {
            public int TotalAmt { get; set; }
            public int Id { get; set; }
        }