繁体   English   中英

逐位和对列表的操作并将值转换为逗号分隔的字符串

Bit wise and operation on list and convert value to comma separated string

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一个返回 ID、类型和值的列表。 ID 存储为 2 的幂。下面的示例数据

var _data = await _context.clubs.Where(x => x.Type == "NewTown").ToListAsync();
ID 类型 价值
1 新城市 测试1
2 新城市 测试2
4 新城市 测试3

我有一个视图 model ,它通过添加它们来存储该表中的 ID,就像我第一个和第三个 select 一样,如果我第一个和第二个 select 它会保存 5,它会类似地保存 5。

这些值将保存在另一个表中,我不能将 Id 存储为逗号分隔值,因为它最终会作为令牌发送,如果我有很多字段,令牌会超过长度,这就是我保存总和的原因的ID。

现在我想做的是在显示这些值时,如果保存了 5,我想显示 Test1、Test3。 现在我知道如果我对数组和选定的值做一些明智的操作,它会给我下面这个例子的值。

var savedVal= 5;
var testArray = new int[] {1,2,4,8,16,32,64,128};
testArray .Select(x => new { savedVal= x, Enabled = ((savedVal & x) > 0) }).Dump();
保存值 启用
1 真的
2 错误的
4 真的
8 错误的
16 错误的
32 错误的
64 错误的
128 错误的

这将使我为所选值启用“true”。

现在我想知道的是如何为我的列表场景实现这一点,其中列表中有 3 个字段,并且我希望将启用的字段的值作为逗号分隔的字符串,例如“Test1,Test3”,例如我共享。

2 个回复

使用 Linq: Join , Where , Select , ToArray和 String.Join 的组合,通过加入您返回的已savedVals值列表(其中Enabled = true )从String.Join生成测试值列表

//a test object to simulate your DBContext
var testdbcontext = new List<dynamic> 
{ 
    new { Id = 1, Type = "NewTown", Value = "Test1" }, 
    new { Id = 2, Type = "NewTown", Value = "Test2" }, 
    new { Id = 4, Type = "NewTown", Value = "Test3" }
};

var savedVal= 5;
var testArray = new int[] {1,2,4,8,16,32,64,128};

Console.WriteLine(String.Join(",", 
    testdbcontext
   .Join(testArray.Select(x => new { savedVal= x, Enabled = ((savedVal & x) > 0) })
   .Where(b => b.Enabled)
   .Select(c => c.savedVal),
                a => a.Id,
                b => b,
                (a, b) => new string (a.Value)).ToArray()));

印刷:

//Test1,Test3

前面的答案绝对正确,对于初学者来说购买可能有点混乱/太复杂。 您实际上只是错过了 String.Join 方法来实现您的目标。 我解决您问题的代码版本是:

...(your code)

var _data = await _context
    .clubs
    .Where(x => x.Type == "NewTown")
    .Where (x => (savedVal & x) > 0)
    .ToListAsync();

resultString = String.Join(',', _data.Select(x => x.Value));
1 将逗号分隔的字符串转换为列表

我想传递一个int(逗号分隔)列表,这是我表中的一个字段 即。 1234,2345,356,4567 到WHERE IN子句。 但是列表是一个字符串( VARCHAR ),我正在比较一个int字段。 有没有办法让我将列表转换为整数列表? Enterprise_ID是 ...

2 逗号分隔字符串列表上的交叉操作

我有一个用逗号分隔的字符串列表,如下所示: 并且列表的每个元素都有逗号分隔的字符串,例如 我想在此字符串列表上应用AND操作,因此得到如下输出: 有没有有效的方法来实现交叉口操作? ...

2013-07-20 10:58:10 3 419   c#
5 转换逗号分隔的列表 列出

我有一个包含逗号分隔值的List&lt;string&gt; ,例如,每个项目看起来都像“ 123、123、123”。 现在,我想将其转换为List&lt;int&gt; 。 我怎样才能做到这一点? 我尝试了以下方法: 但它说: System.Collections. ...

2015-11-26 09:31:21 2 641   c#/ .net
6 将`List `转换为逗号分隔的字符串

有没有一种快速的方法将List&lt;string&gt;转换为C#中以逗号分隔的string ? 我这样做但也许有更快或更有效的方式? PS:在这个网站上搜索过但大多数解决方案都是针对Java或Python的 ...

10 将列表对象中的字符串转换为逗号分隔

我有一个 arraylist 对象,其中 object 中的实例变量之一是字符串。 我想将 object 列表中的字符串变量转换为单个逗号分隔的字符串。 例如, 我有一个 object 员工如下。 考虑一份员工名单, 预期 output(类型:字符串): 我知道它可以通过循环来完成。 但我正在寻找一 ...

2013-09-11 13:46:53 5 5774   java
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM