【问题标题】:Retrieve comma-separated values from IQueryable and add to list从 IQueryable 检索逗号分隔值并添加到列表
【发布时间】:2017-09-02 10:00:57
【问题描述】:
IQueryable<string> ScannedBarcodes = XYZDb.tblScannedBarcodes
                                          .Where(i => i.PullNo == lblPullNo.Text)
                                          .Select(i => i.Barcode);

结果视图显示类似

"678765,090909,243454,675434"

现在我想将所有逗号分隔的值添加到一个列表中。

我的其余代码如下:

foreach (var item in ScannedBarcodes)
{
    List<string> _barcodes = new List<string>();
    _barcodes.Add(item);
}

如何拆分?

提前致谢

【问题讨论】:

  • 简单的.ToList()then 怎么样?

标签: c# linq list iqueryable


【解决方案1】:

可以使用 Linq 进行拆分,如下所示。

var _barcodes =
    ScannedBarcodes.SelectMany(iString => iString.Split(new char[]{ ','}))
                   .ToList();

【讨论】:

  • 不是说Barcode有属性类型string,但即便如此,String.Split需要一个字符数组,而不是字符串,而且String.Split对IQueryable不起作用,所以你应该这样做AsEnumerable() 优先
【解决方案2】:

使用

_barcodes.AddRange(item.Split(','));

【讨论】:

    【解决方案3】:

    没有一个带逗号的字符串 - 这只是 调试器显示IQueryable 已经是一个可枚举的值列表.....

    IQueryable<string> ScannedBarcodes = XYZDb.tblScannedBarcodes
                                              .Where(i => i.PullNo == lblPullNo.Text)
                                              .Select(i => i.Barcode);
    
    List<string> _barcodes = new List<string>();
    _barcodes.AddRange(ScannedBarcodes);
    

    确实没有必要遍历这些值 - 只需创建您的 List&lt;string&gt;,然后在一次调用 .AddRange() 时将整个 IQueryable 集合添加到其中 ...

    【讨论】:

    • 数据库有这样的值 "678765,090909,243454,675434"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 2013-07-03
    • 2023-03-16
    • 1970-01-01
    相关资源
    最近更新 更多