如何将一个列表单个项目与C#linq中的另一个列表项目进行比较? [英] How to compare one list single item with another list items in C# linq?
问题描述
大家好,
我有两个名单。
一个列表是中心我在哪里将城市(ID)作为项目(以逗号分隔)。
另一个列表用于我只有 city <的会话/ u>(ID)作为项目。
现在我想将会话城市与中心城市进行比较。
会话将只有一个城市,例如:hyd。
其中,
中心将有城市,如:德里,孟买, Hyd ...
i想要比较session-city == center-city的会话
< b>我尝试了什么:
i尝试使用contains,findall,where,select ...
SessionController.Instance.All.FindAll(
item =>
item.ProgramID == programId&& / * Resource Path:Program * /
//item.SectorID .Contains(item.SectorID)&& / *资源路径:Sector * /
//item.CenterGroup.CenterIDs.Split(',').ToList().Contai ns(center.ID.ToString())
item.CityID == cityIds)//错误。
选择(item => new {id = item.ID,value = item.NameEN})
plz guys ,帮帮我,我怎么比较。
谢谢
基于 OriginalGriff [ ^ ],我将共享另一个解决方案,它使用Where
+任何
Linq方法:
var found = session
。 Where(s => center
.SelectMany(c => c.Split(new char [] {','},StringSplitOptions.RemoveEmptyEntries))
.Any(z => z = = s));
如果CityId
的类型为Int
,您需要将拆分的字符串转换为整数:
.Any(z => Convert.ToInt32(z)= = s));
进一步详情请见:
String.Split方法(Char [],StringSplitOptions)(系统) [ ^ ]
如何to:使用String.Split解析字符串(C#编程指南) [ ^ ]
Enumerable.Any(TSource)方法(IEnumerable(TSource),Func(TSource,Boolean))(System.Linq) [ ^ ]
如果您的意思是:
List< string> centers = new List< string>();
centers.Add( 123,456,789);
centers.Add( 666,333,999);
List< string> session = new List< string>();
session.Add( 456);
session.Add( 666);
session.Add( 888);然后尝试:
var found = session.Where(s = > centers.Where(c = > c.Split(' ,')。包含(s))。Count()!= 0 );
Hi Guys,
I have two lists.
one list is for center where i have cities(ID's) as item(separated by commas).
another list is for session where i have only city(ID) as item.
now i want to compare session city with center cities.
session will have only one city, like: hyd.
Where,
Center will have cities, like: Delhi, Mumbai, Hyd...
i want to compare session where session-city == center-city
What I have tried:
i tried using contains, findall, where, select...
SessionController.Instance.All.FindAll( item => item.ProgramID == programId && /* Resource Path : Program */ //item.SectorID.Contains(item.SectorID) && /* Resource Path : Sector */ //item.CenterGroup.CenterIDs.Split(',').ToList().Contains(center.ID.ToString()) item.CityID==cityIds)//error. Select(item => new { id = item.ID, value = item.NameEN })
plz guys, help me, how can i compare.
Thanks
Based on example provided by OriginalGriff[^], i'd share another solution, which usesWhere
+Any
Linq methods:
var found = session .Where(s => centers .SelectMany(c => c.Split(new char[]{','}, StringSplitOptions.RemoveEmptyEntries)) .Any(z=>z==s));
In case whenCityId
is type ofInt
, you need to convert splited string to integer:
.Any(z=>Convert.ToInt32(z)==s));
For further details, please see:
String.Split Method (Char[], StringSplitOptions) (System)[^]
How to: Parse Strings Using String.Split (C# Programming Guide)[^]
Enumerable.Any(TSource) Method (IEnumerable(TSource), Func(TSource, Boolean)) (System.Linq)[^]
If you mean something like:
List<string> centers = new List<string>(); centers.Add("123,456,789"); centers.Add("666,333,999"); List<string> session = new List<string>(); session.Add("456"); session.Add("666"); session.Add("888");Then try:
var found = session.Where(s => centers.Where(c => c.Split(',').Contains(s)).Count() != 0);
这篇关于如何将一个列表单个项目与C#linq中的另一个列表项目进行比较?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!